我一直收到错误,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 Game\n Thank you for playing with us!");
break;
else
System.out.println("Not a valid choice!\n Please try again...\n");=[;'mm
}
如果您对如何呈现此代码有更好的了解,请不要犹豫:)
答案 0 :(得分:13)
"休息"命令不能在" if"言。
如果您删除" break"从你的代码命令,然后测试代码,你会发现代码工作完全相同没有" break"命令与一个。
"分段"设计用于内部循环(for,while,do-while,增强和切换)。
答案 1 :(得分:12)
因为您的else
没有附加任何内容。没有大括号的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
而不是无限while(boolean)
循环,因此可以轻松退出循环。另一种方法是使用break with labels。
答案 2 :(得分:5)
问题是您尝试在if
中使用多个语句而不使用{}
。
你现在拥有的东西被解释为:
if( choice==5 )
{
System.out.println( ... );
}
break;
else
{
//...
}
你真的想要:
if( choice==5 )
{
System.out.println( ... );
break;
}
else
{
//...
}
此外,正如Farce所说,最好将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
//...
1}},这会失败,它仍会进入你的其他区块。
switch
更优雅的解决方案是使用break
语句。但是,除非您使用标签,否则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( ... );
}
}
仅从最内部的“块”中断开。所以你想标记你的循环,如果情况是5,那就打破它:
bool finished = false;
while( !finished )
{
switch( choice )
{
// ...
case 5:
System.out.println( ... )
finished = true;
break;
// ...
}
}
除了标记循环外,您还可以使用一个标志来告诉循环停止。
{{1}}