Problem mit Javaeditor: Cannot find Symbol

sebi04.04

Mitglied
Hallo alle Zusammen,
bin jetzt in der 11 auf dem Gymnasium und wir haben vor 2 Wochen mit JAVA angefangen.
Probleme die ich bis jetzt hatte habe ich seber löse können, aber nun komme ich absolut nicht weiter :shock:.
Es geht darum einen Taschenrechner zu Programmieren, bei dem man Die erste Zahl (zahl1) den Operanden (operand) und die Zweite Zahl (zahl2) mit hilfe der Kon.java einegeben sollte und das Programm das dann Ausrechnet. Nun gibt er mir aber immer aus :

Code:
Compiliere F:\Schule\Informatik\Java-Dateien\Aufgabe 5\Taschenrechner.java mit Java-Compiler
Taschenrechner.java:8:28: cannot find symbol
symbol  : variable x1
location: class Taschenrechner
                double x = x1 ;
                       ^
1 error

der Quellcode ist wie folgt:
Java:
            public class Taschenrechner {

              public static void main (String [] arguments){
                System.out.print("*****Taschenrechner*****\n");
                double zahl1 = Kon.readDouble ();
                char operand = Kon.readChar ();
                double zahl2 = Kon.readDouble ();
                double x = x1 ;
                switch (operand) {
                  case '+' :{
                  double  x1 = zahl1 + zahl2; break;
                  }
                  case '-' :{
                  double  x1 = zahl1 - zahl2; break;
                  }
                  case '*' :{
                  double  x1 = zahl1 * zahl2; break;
                  }
                  case '/' :{
                  double  x1 = zahl1 / zahl2; break;
                  }
                  default:{
                    System.out.print("Kein gültiger Operand!");
                  }
                }
                System.out.print("\n=\n");
                System.out.print(x);

                }

              }

bitte helft mir meinen Fehler zu finden.

mfg Sebi
 
Das Problem ist, dass du x1 niemals deklarierst. Wo soll das her kommen?

edit: ich denke du willst aus der Zeile
Java:
double x = x1 ;
einfach
Java:
double x1 ;
machen, unten dann:
Java:
 System.out.print(x1);

edit2: Herlich Willkommen auf java-forum.org ;-)
 
Zuletzt bearbeitet:
double x = x1; ist blödsinn, wo ist denn deine variable x1 deklariert?
ersetz die zeile einfach durch "double x1;" und passe zeile 27 dementsprechend an.

Edit: doofer Morl und eRaaaa. 🙁 😛
 
Zuletzt bearbeitet:
Hallo Leute,
vielen Dank das ihr mir alle geholfen habt :toll:, war ein doofer Denkfehler :noe:

Ich hoffe ich kann meine Kenntnisse schnell erweitern, und habe deswegen noch eine Frage an euch:

Gibt es eine Website, ein tutorial, oder einen Ratgeber wo man schritt für schritt weiter Operationen in Java lernt ?

Kenne bis jetzt ja nur die Grundsachen.

mfg Sebi

EDIT: Es funnktioniert immer noch nicht.

Er sagt mir die Variable die der Switch verwenden Will, also x1 wäre schon in der main vergeben.????

Hier der Fehler und der Quellcode :noe:

Compiliere F:\Schule\Informatik\Java-Dateien\Aufgabe 5\Taschenrechner.java mit Java-Compiler
Taschenrechner.java:11:27: x1 is already defined in main(java.lang.String[])
double x1 = zahl1 + zahl2; break;
^
Taschenrechner.java:14:27: x1 is already defined in main(java.lang.String[])
double x1 = zahl1 - zahl2; break;
^
Taschenrechner.java:17:27: x1 is already defined in main(java.lang.String[])
double x1 = zahl1 * zahl2; break;
^
Taschenrechner.java:20:27: x1 is already defined in main(java.lang.String[])
double x1 = zahl1 / zahl2; break;
^
4 errors

Java:
             public class Taschenrechner {

              public static void main (String [] arguments){
                System.out.print("*****Taschenrechner*****\n");
                double zahl1 = Kon.readDouble ();
                char operand = Kon.readChar ();
                double zahl2 = Kon.readDouble ();
                double x1 ;
                switch (operand) {
                  case '+' :{
                  double  x1 = zahl1 + zahl2; break;
                  }
                  case '-' :{
                  double  x1 = zahl1 - zahl2; break;
                  }
                  case '*' :{
                  double  x1 = zahl1 * zahl2; break;
                  }
                  case '/' :{
                  double  x1 = zahl1 / zahl2; break;
                  }
                  default:{
                    System.out.print("Kein gültiger Operand!");
                  }
                }
                System.out.print("\n=\n");
                System.out.print(x1);

                }

              }
 
Zuletzt bearbeitet:
Auch wenn hier immer wieder Leute davon abraten... Geschmäcker sind halt verschieden.
Als ich etwa in deinem Alter (und vermutlich auf deinem Kenntnisstand) war, habe ich diese tolle Seite hier entdeckt:
Galileo Computing :: Java ist auch eine Insel (8. Auflage)
Dort wird seeeehr viel erklärt und von wenig Grundkentnissen ausgegangen. Es ist aber kein interaktives Tutorial mit Übungen die man begleitend machen kann. Ich finde es trotzdem auch für Einsteiger super... schau mal rein. Und wenn es dir jetzt zuviel ist, dann ist es als Nachschlagewerk aufjedenfall für die Zukunft nützlich.

Viel Erfolg beim Java lernen, und bei Problemen an denen du selber schon ein wenig geknabbert hast (das gehört dazu, ich lerne am meisten beim Probleme knabbern 😀) weißt du ja zur Not auch wohin zu dich wenden kannst 🙂
 
H
EDIT: Es funnktioniert immer noch nicht.

Lasse das [c]double[/c] jeweils im switch weg ! Also nur [c]x1 = zahl1 + zahl2; break;[/c] ...
Desweiteren musst du x1 in jedem Fall initialisieren(da lokal), was du hier nicht machst. Es kann ja sein, dass keiner der cases zutrifft. Also entweder direkt oben schon einen Defaultwert zuweisen, oder eben im switch im default-Teil !
 
Hi,
was heißt initalisieren, wen ich es weglasse, sagt er mir auch etwas von :

Compiliere F:\Schule\Informatik\Java-Dateien\Aufgabe 5\Taschenrechner.java mit Java-Compiler
Taschenrechner.java:27:34: variable x1 might not have been initialized
System.out.print(x1);
^
1 error


??
mfg Sebi
 
Eine Variable initialisieren bedeutet, ihr einen Wert zuzuweisen. Beim deklarieren reservierst du nur den Speicher für die Variable.
In dem Ausdruck
Code:
double x = 0;
deklarierst und initialisierst du gleichzeitig (oder besser gesagt, nacheinander 😉)

Leider gibt es auch studierte Informatiker die den Unterschied zwischen deklarieren und initialisieren nicht kennen... :shock:

Aber dir ist das natürlich erlaubt 😉
 

Zurück
Oben