W
webjack
Gast
Hallo Profis,
bin absoluter Java-Neuling und habe ein furchtbares Problem, dass ich nicht lösen kann und hoffe somit auf eure hilfe.
Das programm soll eigentlich nix grossartiges leisten: zwei integer aus Textfeldern einlesen, die als Katheten eine rechtw. Dreiecks annehmen, die passende Hypothenuse berechnen und dann natürlich auch ausgeben.
Hab folgenden Code zusammengeschustert:
Nun ja, wär ja schön und gut, wenns denn auch funktionieren würde. Stattdessen erhalte ich aber beim Compilieren folgende Errors:
Nunja, was ist das mit der "finalen deklaration" ?? wie mach ich das? und vor allem: warum??
Dankeschön...
Grüssle
bin absoluter Java-Neuling und habe ein furchtbares Problem, dass ich nicht lösen kann und hoffe somit auf eure hilfe.
Das programm soll eigentlich nix grossartiges leisten: zwei integer aus Textfeldern einlesen, die als Katheten eine rechtw. Dreiecks annehmen, die passende Hypothenuse berechnen und dann natürlich auch ausgeben.
Hab folgenden Code zusammengeschustert:
Code:
import java.awt.*;
import java.awt.event.*;
class mainform extends Frame{
mainform(){
this.setSize(300,300);
this.setLocation(150,150);
this.setLayout(new GridLayout(4,2));
//create the visual components: labels
Label lab_kath1 = new Label("a");
Label lab_kath2 = new Label("b");
Label lab_hypo = new Label("c");
//...and Edit-Fields
TextField ed_kath1 = new TextField();
TextField ed_kath2 = new TextField();
TextField ed_hypo = new TextField();
//buttons
Button btn_calculate = new Button("Berechnen");
Button btn_clear = new Button("Zurücksetzen");
//add components to form:
this.add(lab_kath1);
this.add(ed_kath1);
this.add(lab_kath2);
this.add(ed_kath2);
this.add(lab_hypo);
this.add(ed_hypo);
this.add(btn_clear);
this.add(btn_calculate);
this.setVisible(true);
class MyCalcListener implements ActionListener{
public void actionPerformed(ActionEvent e){
int kath1 = Integer.parseInt(ed_kath1.getText());
int kath2 = Integer.parseInt(ed_kath2.getText());
double hypo = Math.sqrt(kath1*kath1*1.0+kath2*kath2);
ed_hypo.setText(String.valueOf(hypo));
}
}
btn_calculate.addActionListener(new MyCalcListener());
class mainlistener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
this.addWindowListener(new mainlistener());
}
}
public class geometrie{
public static void main (String args[]){
mainform Form1 = new mainform();
}
}
Nun ja, wär ja schön und gut, wenns denn auch funktionieren würde. Stattdessen erhalte ich aber beim Compilieren folgende Errors:
geometrie.java:48: local variable ed_kath1 is accessed from within inner class; needs to be declared final
int kath1 = Integer.parseInt(ed_kath1.getText());
geometrie.java:49: local variable ed_kath2 is accessed from within inner class; needs to be declared final
int kath2 = Integer.parseInt(ed_kath2.getText());
geometrie.java:51: local variable ed_hypo is accessed from within inner class; needs to be declared final
ed_hypo.setText(String.valueOf(hypo));
3 errors
Nunja, was ist das mit der "finalen deklaration" ?? wie mach ich das? und vor allem: warum??
Dankeschön...
Grüssle