Wie kann ich dieses switch-case in if umwandeln?
Hallo,
meine Aufgabe lautet, dass ich dieses switch-case in if-Verzweigungen umwandeln soll:
int choice = 2;
switch (choice) {
case 1:
case 2:
System.out.print("Feuer");
break;
case 3:
System.out.print("Luft");
break;
default:
System.out.print("ungültig");
}
Und meine if-Verzweigung sieht so aus:
public class choice {
public static void main(String[] args) {
int choice = 2;
if (choice >= 1) {
System.out.println("Feuer");
return;
}
if (choice == 2) {
System.out.println("Feuer");
return;
}
if (choice <= 3) {
System.out.println("Luft");
return;
}
else {
System.out.println("ungueltig");
}
}
}
Aber beim Ausführen gibt er mir trotz Luft und else (ungültig) bei allen Zahlen Feuer aus. Weiß jemand warum?
3 Antworten
Diese Bedingung:
if (choice >= 1) {
ist falsch, denn im Fall, dass choice den Wert 3 hat, würde sie ebenso zutreffen.
Diese Bedingung wiederum:
if (choice <= 3) {
würde auch bei den Werten 1 und 2 erfüllt werden.
Übersetze es doch eher Eins-zu-eins (Pseudocode):
if choice == 1 or choice == 2:
print "Feuer"
else if choice == 3:
print "Luft"
else:
print "ungültig"
Der Code ist korrekt. Du kannst es auch hier prüfen: https://ideone.com/i3QOS3.
Danke habe es gerade versucht jedoch kommt beim code immer noch bei 3 Feuer ich weiss gerade nicht ob es an meinem Laptop liegt oder sonstiges. Ich sehe nämlich keinen Fehler mehr drin...
Hey,
liegt ganz simpel daran, dass Du bei Deiner ersten Abfrage abfragst, ob die Zahl größer oder gleich 1 ist. Das ist immer der Fall, bevor die anderen Abfragen überhaupt an die Reihe kommen.
Um dieses Problem zu beheben wäre es sinnvoll die Reihenfolge der Ifs zu ändern oder mit dem Und-Operator zu arbeiten, statt mit größer, kleiner und gleich.
LG :)
if((1==choise)||(2==choise))System.out.print("Feuer");
else{
if(3==choise)System.out.print("Luft");
else System.out.print("ungültig");
}
Mal ein Versuch, ungetestet ....
oder
String s="";
if((1==choise)||(2==choise))s="Feuer";
else{
if(3==choise)s="Luft";else s="ungültig";
}
System.out.print(s);