Das Problem ist, dass Sie mehrere Anweisungen haben, versuchen, in einem if
ohne {}
zu verwenden. Was Sie gerade wie interpretiert haben:
if(choice==5)
{
System.out.println(...);
}
break;
else
{
//...
}
Sie wollen wirklich:
if(choice==5)
{
System.out.println(...);
break;
}
else
{
//...
}
Auch als Farce festgestellt hat, wäre es besser, else if
die Bedingungen für alle zu verwenden, anstatt if
denn wenn choice==1
, es wird immer noch durchlaufen und prüfen, ob , die fehlschlagen würde, und es wird immer noch in Ihrem else Block gehen.
if(choice==1)
//...
else if(choice==2)
//...
else if(choice==3)
//...
else if(choice==4)
//...
else if(choice==5)
{
//...
}
else
//...
Eine elegantere Lösung wäre eine switch
Aussage werden. break
bricht jedoch nur vom innersten "Block" ab, wenn Sie keine Labels verwenden. So möchten Sie Ihre Schleife beschriften und brechen aus, dass, wenn der Fall 5:
LOOP:
for(;;)
{
System.out.println("---> Your choice: ");
choice = input.nextInt();
switch(choice)
{
case 1:
playGame();
break;
case 2:
loadGame();
break;
case 2:
options();
break;
case 4:
credits();
break;
case 5:
System.out.println("End of Game\n Thank you for playing with us!");
break LOOP;
default:
System.out.println(...);
}
}
Statt die Schleife der Beschriftung, könnten Sie auch einen Flag verwenden, um die Schleife zu sagen, zu stoppen.
bool finished = false;
while(!finished)
{
switch(choice)
{
// ...
case 5:
System.out.println(...)
finished = true;
break;
// ...
}
}
Java ist nicht Python. Du kannst nicht erwarten, dass zwei Zeilen im gleichen Block sind, nur weil sie die gleiche Einrückung haben ... – Sinkingpoint
Ich sehe xD danke! – John
Auch das wird das Problem nicht vollständig lösen.Alle 'if'-Anweisungen müssen mit' else' verbunden sein. –