Вопрос заключается в том, что вы пытаетесь иметь несколько операторов в if
без использования {}
. Что Вы в настоящее время интерпретируется как:
if(choice==5)
{
System.out.println(...);
}
break;
else
{
//...
}
Вы действительно хотите:
if(choice==5)
{
System.out.println(...);
break;
}
else
{
//...
}
Кроме того, как Фарс заявил, что было бы лучше использовать else if
для всех условий вместо if
, потому что если choice==1
, он все равно пройдет проверку и проверьте, не будет ли choice==5
, и он все равно войдет в ваш блок.
if(choice==1)
//...
else if(choice==2)
//...
else if(choice==3)
//...
else if(choice==4)
//...
else if(choice==5)
{
//...
}
else
//...
Более элегантное решение было бы, используя switch
заявление. Тем не менее, break
только ломается от самого внутреннего «блока», если вы не используете метки. Итак, вы хотите, чтобы маркировать свой цикл и вырваться из, что, если дело 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(...);
}
}
Вместо маркировки петли, вы можете также использовать флаг, чтобы сказать петлю, чтобы остановить.
bool finished = false;
while(!finished)
{
switch(choice)
{
// ...
case 5:
System.out.println(...)
finished = true;
break;
// ...
}
}
Java не является Python. Вы не можете ожидать, что две строки будут в одном блоке только потому, что у них одинаковый отступ ... – Sinkingpoint
Я вижу xD спасибо! – John
Даже это не решит проблему полностью.Все операторы 'if' должны быть связаны с' else'. –