# Problem mit Javaeditor: Cannot find Symbol



## sebi04.04 (23. Sep 2010)

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 :


```
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:

```
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


----------



## Morl99 (23. Sep 2010)

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

edit: ich denke du willst aus der Zeile

```
double x = x1 ;
```
einfach 

```
double x1 ;
```
machen, unten dann:

```
System.out.print(x1);
```

edit2: Herlich Willkommen auf java-forum.org ;-)


----------



## eRaaaa (23. Sep 2010)

sebi04.04 hat gesagt.:


> bitte helft mir meinen Fehler zu finden.



Du probierst x den Wert von x1 zuzuweisen, hast vorher aber nirgends x1 deklariert...was hast du dir bei der Zeile gedacht? Was soll da passieren?


----------



## Irreparabel (23. Sep 2010)

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.


----------



## sebi04.04 (23. Sep 2010)

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


```
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);

                }

              }
```


----------



## Morl99 (23. Sep 2010)

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


----------



## Tomate_Salat (23. Sep 2010)

... und wer kein Lexikon zum Einstieg lesen will:
nrg hat da ein paar links gepostet.


----------



## Morl99 (23. Sep 2010)

Tomate_Salat hat gesagt.:


> ... und wer kein Lexikon zum Einstieg lesen will:
> nrg hat da ein paar links gepostet.



Ja genau diesen Beitrag hatte ich vorhin noch gelesen und eben wieder gesucht... war aber nicht fündig geworden


----------



## eRaaaa (23. Sep 2010)

sebi04.04 hat gesagt.:


> 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 !


----------



## sebi04.04 (23. Sep 2010)

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


----------



## eRaaaa (23. Sep 2010)

[c]double x1 ;[/c] --> [c]double x1 = 0;[/c]


----------



## sebi04.04 (23. Sep 2010)

Oh, super danke :toll:
da wäre ich nie draufgekommen ;(

naja ich bin froh das es euch gibt, die schon mehr ahnung davon haben :applaus:.

Lg sebi


----------



## Morl99 (23. Sep 2010)

Eine Variable initialisieren bedeutet, ihr einen Wert zuzuweisen. Beim deklarieren reservierst du nur den Speicher für die Variable.
In dem Ausdruck 
	
	
	
	





```
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


----------



## L-ectron-X (23. Sep 2010)

Die Bedeutung der Begriffe Deklaration, Definition und Initialisierung sind z.B. hier beschrieben: Begriffe - Byte-Welt Wiki


----------

