инструкция break в "if else" - java
Я продолжаю получать ошибку,if
без else
.
пробовал else if
а также
for (;;){
System.out.println("---> Your choice: ");
choice = input.nextInt();
if (choice==1)
playGame();
if (choice==2)
loadGame();
if (choice==3)
options();
if (choice==4)
credits();
if (choice==5)
System.out.println("End of Gamen Thank you for playing with us!");
break;
else
System.out.println("Not a valid choice!n Please try again...n");=[;'mm
}
кроме того, если у вас есть лучшее представление о том, как представить этот код, Пожалуйста, не стесняйтесь :)
3 ответов
потому что else
ни к чему не привязан. The if
без фигурных скобок охватывает только один оператор, который непосредственно следует за ним.
if (choice==5)
{
System.out.println("End of Game\n Thank you for playing with us!");
break;
}
else
{
System.out.println("Not a valid choice!\n Please try again...\n");
}
Не использование фигурных скобок обычно рассматривается как плохая практика, потому что это может привести к точным проблемам, с которыми вы столкнулись.
кроме того, с помощью switch
здесь было бы больше смысла.
int choice;
boolean keepGoing = true;
while(keepGoing)
{
System.out.println("---> Your choice: ");
choice = input.nextInt();
switch(choice)
{
case 1:
playGame();
break;
case 2:
loadGame();
break;
// your other cases
// ...
case 5:
System.out.println("End of Game\n Thank you for playing with us!");
keepGoing = false;
break;
default:
System.out.println("Not a valid choice!\n Please try again...\n");
}
}
обратите внимание, что вместо бесконечного for
loop я использовал while(boolean)
, что упрощает выход из цикла. Другим подходом было бы использование break with labels.
команда "break "не работает в операторе" if".
Если вы удалите команду " break "из своего кода, а затем протестируете код, вы должны обнаружить, что код работает точно так же без команды" break", как с одним.
"перерыв" предназначен для использования внутри петель (Для, в то время как, do-while, enhanced for и switch).
проблема в том, что вы пытаетесь иметь несколько заявлений в if
без использования {}
.
То, что у вас в настоящее время интерпретируется как:
if( choice==5 )
{
System.out.println( ... );
}
break;
else
{
//...
}
вы действительно хотите:
if( choice==5 )
{
System.out.println( ... );
break;
}
else
{
//...
}
кроме того, как заявил фарс, было бы лучше использовать else if
для всех условий вместо if
потому что если choice==1
, он все равно пройдет и проверит, если choice==5
, который потерпел бы неудачу, и он все равно войдет в ваш else блок.
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;
// ...
}
}