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
}
また、このコードを提示する方法についてより良いアイデアを持っている場合は、ifしないでください:)
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」コマンドは、「if」ステートメント内では機能しません。
コードから「break」コマンドを削除してからコードをテストすると、「break」コマンドがなくてもコードはまったく同じように動作することがわかります。
「Break」は、ループ内(for、while、do-while、Enhanced forおよびswitch)で使用するために設計されています。
問題は、{}
を使用せずにif
に複数のステートメントを入れようとしていることです。あなたが現在持っているものは次のように解釈されます:
if( choice==5 )
{
System.out.println( ... );
}
break;
else
{
//...
}
あなたは本当に欲しい:
if( choice==5 )
{
System.out.println( ... );
break;
}
else
{
//...
}
また、Farceが述べたように、すべての条件にif
の代わりにelse 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;
// ...
}
}