Java wenn if wahr wird nicht ausgeführt

keine_maetzchen

Cadet 1st Year
Registriert
Okt. 2008
Beiträge
15
Hallo ich hab innerhalb eines Programms folgendes stehen:

Scanner eingabe1 = new Scanner(System.in);
String bst = eingabe1.next();


if (bst == "a") {Zahl = 6;}

else if (bst == "b") {Zahl = 7;}

else if (bst == "c") {Zahl = 8;}

else {Zahl = 9;}

gibt = (Zahl * 14 - 42);


"Zahl" und "gibt" sind schon weiter oben erschaffen worden

wenn ich das Programm ausführe und an der Stelle bin wo ich einen dieser Buchstaben angeben muss, gibt er mir an der Stelle, wo "gibt" ausgegeben wird 84 (9 * 14 -42) aus. Auch wenn ich a,b oder c eingegebne habe.

Das Selbe Problem hab ich an anderen ähnlichen Stellen auch.

Wie kommt das und wie gehts das weg


ich bin für jede Hilfe dankbar
 
Ich würde string vergleiche nicht mit "==" ausfürhen.

Probier mal bst.equals("a");
das sollte gehen.

mfg
 
Hast du dir schon mal überlegt, das mit einer switch case Sache zu lösen?
Bist du dir sicher, dass das Verhalten auch bei "c" auftritt?

ich würde es so schreiben:

switch (bist)
{
case 'a':
Zahl=6;
break;
case 'b':
Zahl=7;
break;
case 'c':
Zahl=8;
break;
default:
Zahl=9;
break;
}
gibts = (Zahl*14-42);
Stimmt an den Strings könnte es natürlich auch liegen.
 
Zuletzt bearbeitet: (Post über mir gelesen)
Man könnte auch ein
Code:
char c = ' ';
if(bst.length() > 0) c = bst.charAt(0);
machen. Anschließend kann man dann problemlos ein switch-Statement verwenden oder das "==". Ansonsten natürlich immer Strings mit equals() vergleichen.

In seltenen Einzelfällen (welcher hier sicher NICHT vorliegt) kann es performancetechnisch bei Strings vorteilhaft sein, die intern()-Methode aufzurufen. Das Ergebnis dieser Methode kann man dann tatsächlich mit "==" mit fest definierten Strings (oder anderen Strings die mit intern() erzeugt wurden) vergleichen!
 
ich hab das jetzt erst mal mit

bst.equals("a") {zahl = 6;}
bst.equals("b") {zahl = 7;}

gemacht

aber jetzt nimmt er immer 7


ist das mit den geschweiften klammmern über haupt richtig
 
bei dem

switch (bist)
{
case 'a':
Zahl=6;
break;
case 'b':
Zahl=7;
break;
case 'c':
Zahl=8;
break;
default:
Zahl=9;
break;
}
gibts = (Zahl*14-42);

zeigt der beim übersetzen " incompatible types - found java.lang.String but expected int "
an
 
An welcher Stelle?
Also ich hab noch nicht so viel mit Java gemacht, aber wenn das ähnlich ist wie mit C-String Arrays, dann muss man einen cast machen (static_cast<char>) und und bei der switch natürlich dann bst[0] abfragen, und gibts[0], weil eine Zahl kann man schwer in mehreren Feldern abspeichern.
 
Switch-case in Java geht ausschließlich mit primitiven Datentypen!
 
Zurück
Oben