Java: Ja/Nein Frage mit Scanner

-simonho-

Cadet 4th Year
Registriert
Juli 2012
Beiträge
119
Hallo,

ich bin gerade bei meinen Informatik Hausaufgaben.
Dazu habe ich zwei Klassen in denen es um Zimmer und Möbel geht.
Der folgende Methodenteil funktioniert leider nicht richtig, d. h. sie wird kompiliert, aber es funktioniert nicht so wie ich mir das gedacht habe:
Code:
System.out.println("Möchtest du ein weiteres Möbelstück kaufen? (Ja/Nein)");
    String jn = s.next();  //s=scanner
    System.out.println(jn);
    if (jn=="Ja") {
      System.out.println("Wie viel kostet dein Möbelstück?");
      this.moebelPreis = s.nextInt();
      gmp = gmp + this.moebelPreis;
    } // end of if
    else {
      if (jn=="Nein") {
        System.out.println("Dann halt nicht.");
      } // end of if
      else {
        System.out.println("Bitte antworte mit Ja oder Nein");
        System.out.println("Möchtest du ein weiteres Möbelstück kaufen? (Ja/Nein)");
        jn = s.next();
        if (jn=="Ja") {
          System.out.println("Wie viel kostet dein Möbelstück?");
          this.moebelPreis = s.nextInt();
          gmp = gmp + this.moebelPreis;
        } // end of if
      } // end of if-else
    } // end of if-else

Die Variable jn soll wenn sie das Wort Ja enthält die if-Schleife auslösen. Leider passiert immer gar nichts.
Ich wäre sehr dankbar wenn mir da jemand ein bisschen helfen könnte, wie ich das besser lösen kann.

Gruß -simonho-
 
jn.equals("Ja")

das gleiche bei den anderen string vergleichen

so wie du es ergleichst wird geguckt ob es das selbe object mit der id:xxx ist und nicht der inhalt überprüft
 
if ( jn.equals("Ja") == true )

sollte funzen

edit: wäre auch sinnvoll nach "ja" oder j, y zu filtern
 
== vergleicht nur die Objekt Referenz. D.h. gibt true zurück, wenn es beide Objekte auf denselben Speicherbereich zeigen. Bei Primitives vergleicht == die Werte.
.equals(..) vergleicht zwei Objekte anhand ... naja anhand dessen, was in der equals Methode steht ;) auf Primitives ist .equals(..) nicht definiert.

Strings sind in Java _immer_ Objekte. Dort ist .equals(..) so implementiert, dass die Zeichenketten jeweils Zeichen für Zeichen übereinstimmen müssen.
 
Zurück
Oben