2011-11-24, 12:46
  #1
Medlem
Rhonxs avatar
Tjena alla fbare!, jag har ett litet problem med min programerings uppgift i java , upgiften var att gra en enkel minirknare och sedan swinga den vilket jag har gjort men jag fr ett problem nr jag kompilerar den.

S jag bifogar koden hr och observera att felet ligger p rad 31 enligt JCs Buildreport. Observera ocks att vissa knappar inte har ftt ngon funktion n men jag vill ha swingen klar s att jag kan forstta

Hr kommer koden:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.FlowLayout;
import java.awt.BorderLayout;


/** skapar en enkel rknare med det vanligaste rknestten */

public class CounterApplet extends JFrame implements ActionListener
{
private JTextField t1;
private JButton b1;
private JButton b2;
private JButton bIndex[] = new JButton[24];
private double tal = 0;
private double talTemp = 0;
private String sign;
private JPanel p1;
private JPanel p2;
private JPanel p3;

/** initierar Rknaren smo en applet */

public CounterApplet()
{
setLayout(new BorderLayout());
setBackground(Color.lightGray);
p1 = new JPanel();
p1.setLayout(new FlowLayout());
p1.add(t1 = new TextField(25));
t1.setFont(new Font("Sans Serif", Font.BOLD, 12));
t1.setEnabled(false);
t1.setText(""+tal);

p2 = new JPanel();
p2.setLayout(new GridLayout(4,6,4,4));
for(int i = 0; i<24; i++)
{
bIndex[i] = new JButton();
bIndex[i].addActionListener(this);
bIndex[i].setFont(new Font("Sans Serif", Font.BOLD, 16));
bIndex[i].setForeground(Color.blue);
p2.add(bIndex[i]);
}
bIndex[0].setLabel("7");
bIndex[1].setLabel("8");
bIndex[2].setLabel("9");
bIndex[3].setForeground(Color.red);
bIndex[3].setLabel("/");
bIndex[4].setLabel("sqrt");
bIndex[5].setLabel("sin");
bIndex[6].setLabel("4");
bIndex[7].setLabel("5");
bIndex[8].setLabel("6");
bIndex[9].setForeground(Color.red);
bIndex[9].setLabel("*");
bIndex[10].setLabel("%");
bIndex[11].setLabel("cos");
bIndex[12].setLabel("1");
bIndex[13].setLabel("2");
bIndex[14].setLabel("3");
bIndex[15].setForeground(Color.red);
bIndex[15].setLabel("-");
bIndex[16].setLabel("1/x");
bIndex[17].setLabel("tan");
bIndex[18].setLabel("0");
bIndex[19].setLabel("+/-");
bIndex[20].setLabel(",");
bIndex[21].setForeground(Color.red);
bIndex[21].setLabel("+");
bIndex[22].setLabel("=");
bIndex[23].setLabel("log");

p3 = new JPanel();
p3.setLayout(new GridLayout(1,2,4,4));
b1 = new JButton("CE");
b1.setFont(new Font("Sans Serif", Font.BOLD, 16));
b1.setForeground(Color.red);
p3.add(b1,"South");
b2 = new JButton("C");
b2.setFont(new Font("Sans Serif", Font.BOLD, 16));
b2.setForeground(Color.red);
p3.add(b2,"South");
b1.addActionListener(this);
b2.addActionListener(this);
add(p1,"North");
add(p2,"Center");
add(p3,"South");
setVisible(true);
pack();

}

/** styr hndelsehanteringen i rknaren */

public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bIndex[0]) //Knappen "7"
{
tal = 10*tal + 7;
t1.setText("" + tal);

}

if(e.getSource() == bIndex[1]) //Knappen "8"
{
tal = 10*tal + 8;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[2]) //Knappen "9"
{
tal = 10*tal + 9;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[3]) //knappen "/"
{
count();
//sign = "sqrt";
t1.setText("" + talTemp);
}
if(e.getSource() == bIndex[4]) //Knappen "sqrt"
{
sign = "sqrt";
talTemp = tal;
tal = Math.sqrt(talTemp);
count();
t1.setText("" + tal);
}

if(e.getSource() == bIndex[5]) //Knappen "4"
{
tal = 10*tal + 4;
t1.setText(""+tal);
}
if(e.getSource() == bIndex[6]) //Knappen "5"
{
tal = 10*tal + 5;
t1.setText("" + tal);
}
if(e.getSource() == bIndex[7]) //Knappen "6"
{
tal = 10*tal + 6;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[8]) //Knappen "*"
{
count();
sign = "*";
t1.setText("" + talTemp);
}

if(e.getSource() == bIndex[9]) //Knappen "%"
{
sign ="%";
talTemp = tal;
tal = talTemp * 0.001;
count();
t1.setText("" + tal);
}

if(e.getSource() == bIndex[10]) //Knappen "1"
{
tal = 10*tal + 1;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[11]) //Knappen "2"
{
tal = 10*tal + 2;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[12]) //Knappen "3"
{
tal = 10*tal + 3;
t1.setText("" + tal);
}

if(e.getSource() == bIndex[13]) //Knappen "-"
{
count();
sign = "-";
t1.setText("" + talTemp);
}

if(e.getSource() == bIndex[14]) //Knappen "1/x"
{
sign = "1/x";
talTemp = tal;
tal = 1/talTemp;
count();
t1.setText("" + tal);
}

if(e.getSource() == bIndex[15]) //Knappen "0"
{
tal = 10*tal + 0;
t1.setText("" + tal);
}
if(e.getSource() == bIndex[16]) //Knappen "+/-"
{
talTemp = tal;
tal = tal*(-1);
t1.setText("" + tal);
}

if(e.getSource() == bIndex[17]) //Ej implementerad
{
t1.setText("" + tal);
}

if(e.getSource() == bIndex[18]) //Knappen "+"
{
count();
sign = "+";
t1.setText("" + talTemp);
}

if(e.getSource() == bIndex[19]) //Knappen "="
{
count();
tal = talTemp;
sign = " ";
t1.setText("" + talTemp);
}

if(e.getSource() == b1) //Knappen CE
{
tal = 0;
t1.setText("" + tal);
}


if(e.getSource() == b2) //Knappen C
{
tal = 0;
talTemp= 0;
t1.setText(" " + tal);
}


}
/** berknar resultatet av den matematiska operationen */

public void count()
{
if(talTemp>0)
{
if(sign == "+")
tal = talTemp + tal;
if(sign == "-")
tal = talTemp - tal;
if(sign == "*")
tal = talTemp * tal;
if(sign == "/")
tal = talTemp / tal;
if(sign == "%")
tal = talTemp * 0.01;
if(sign == "sqrt")
tal = Math.sqrt(talTemp);
if(sign == "1/x")
tal = 1 /talTemp;
if(sign == "=")
tal = talTemp + tal;
}
talTemp = tal;
tal = 0;
}

public static void main(String args[])
{
CounterApplet kalle = new CounterApplet();
}


}

vill ha ett svar eller frklaring s att jag kan fixa det p egen hand helst S man lr sig ngot
Citera
2011-11-24, 13:00
  #2
Moderator
Protons avatar
Det r inte s att du kan tala om vad du fr fr kompileringsfel kanske, hade ju underlttat.
Citera
2011-11-24, 13:01
  #3
Medlem
valter-eggons avatar
Hr:
p1.add(t1 = new TextField(25));

Du mste ndra till:
t1 = new TextField(25);
p1.add(t1);
Citera
2011-11-24, 13:06
  #4
Medlem
Rhonxs avatar
Citat:
Ursprungligen postat av Proton
Det r inte s att du kan tala om vad du fr fr kompileringsfel kanske, hade ju underlttat.

fr fram : error: incompatible types
Citera
2011-11-24, 13:38
  #5
Medlem
Rhonxs avatar
Citat:
Ursprungligen postat av valter-eggon
Hr:
p1.add(t1 = new TextField(25));

Du mste ndra till:
t1 = new TextField(25);
p1.add(t1);

provat fr fortfarnade : error: incompatible types
Citera
2011-11-24, 13:49
  #6
Medlem
valter-eggons avatar
Citat:
Ursprungligen postat av Rhonx
provat fr fortfarnade : error: incompatible types
Aha, tv saker allts.
Hr:
p1.add(t1 = new TextField(25));

Du mste ndra till:
t1 = new JTextField(25);
p1.add(t1);

Incompatible types fr du eftersom du frsker tilldela en JTextField (t1) vrdet av en TextField.
Citera
2011-11-24, 13:54
  #7
Medlem
Rhonxs avatar
Citat:
Ursprungligen postat av valter-eggon
Aha, tv saker allts.
Hr:
p1.add(t1 = new TextField(25));

Du mste ndra till:
t1 = new JTextField(25);
p1.add(t1);

Incompatible types fr du eftersom du frsker tilldela en JTextField (t1) vrdet av en TextField.

funkar prefa nu tackar!
Citera
2011-11-24, 13:57
  #8
Medlem
valter-eggons avatar
Citat:
Ursprungligen postat av Rhonx
funkar prefa nu tackar!
Suvve!

Jag testade koden och det r lite fel i den men jag gissar att det r en del av sakerna du ska fixa. Det blir inte rtt siffror i frhllande till vilken knapp man trycker p i vissa fall.

Kr p!
Citera
2011-11-24, 20:00
  #9
Medlem
Rhonxs avatar
fan nu fick jag ett problem med att lgga till sin cos tan + log (allts sinsus cosinus tangens och logaritmer. r det inte bara att skriva:

if(e.getSource() == bIndex[5]) //Knappen "sin"
{
sign= "sin";
talTemp = tal;
tal = Math.sin(talTemp);
count();
t1.setText("" + tal);
}

"exempel p sin"
Fr ju fan inget material av lraren verhuvudtaget , har googlat runt lite men blir fan inte smartare av det Hur fan skall jag g tillvga?
Citera
2011-11-25, 10:08
  #10
Medlem
Skriv alltid vad du fr fr fel. Blir s mycket lttare att felska d.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in