在'for'循环java中重新启动当前迭代

时间:2012-10-26 15:22:38

标签: java for-loop

我有一个for循环,要求用户输入一个数字,然后用它做10次

我想要一个内置的检查,如果用户输入一个不接受的输入,循环应该重新启动它当前的迭代

例如,如果用户在第3轮输入错误,则应重新启动第3轮。

我该怎么做?在java中有类似REDO语句吗?

3 个答案:

答案 0 :(得分:7)

这样的事情?

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

}

答案 1 :(得分:6)

你有几个选择。

继续 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循环。

答案 2 :(得分:4)

希望避免重新分配i变量,这可能会导致混淆。

 for(int i=0; i<10; i++){
      String command = null;
      do{
        command = takeCommandFromInput();
      } while(isNotValid(command));
      process(command);
  }