10

ユーザーに数値の入力を求めてから、それを 10 回実行する for ループがあります。

ユーザーが受け入れられない入力を入力した場合、ループは現在の反復を再開する必要があるというチェックが組み込まれている必要があります

たとえば、ユーザーがラウンド 3 で何か間違ったことを入力した場合、ラウンド 3 を再開する必要があります。

それ、どうやったら出来るの?JavaにREDO文のようなものはありますか?

4

3 に答える 3

10

このようなもの ?

for(int i=0; i<10; i++){
   if(input wrong){
     i=i-1;
   }

}
于 2012-10-26T15:24:51.540 に答える
8

ここにはいくつかの選択肢があります。

Continue Java のcontinueステートメントは、ループに開始点に戻るように指示します。ただし、forループを使用している場合、これは次の反復に進みますが、これはおそらく必要なものではないため、whileループの実装でより適切に機能します。

int successfulTries = 0;
while(successfulTries < 10)
{
    String s = getUserInput();
    if(isInvalid(s))
        continue;

    successfulTries++;
}

デクリメント このアプローチは私には醜いように思えますが、forループを使用してタスクを実行したい場合は、代わりに、不正な入力を検出したときにforループのカウンターをデクリメント(基本的には「redo」)することができます。

for(int i = 0; i < 10; i++)
{
    String s = getUserInput();
    if(isInvalid(s))
    {
        i--;
        continue;
    }
}

whileループを使用することをお勧めします。

于 2012-10-26T15:27:45.560 に答える
5

変数の再割り当てを避けることをお勧めしiます。これは混乱を招く可能性があります。

 for(int i=0; i<10; i++){
      String command = null;
      do{
        command = takeCommandFromInput();
      } while(isNotValid(command));
      process(command);
  }
于 2012-10-26T15:34:36.597 に答える