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

Kil*_*ler 7 java for-loop

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

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

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

我怎么做?在java中有类似REDO语句的东西吗?

Per*_*ror 8

这样的事情?

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

}
Run Code Online (Sandbox Code Playgroud)


Ina*_*Ina 7

你有几个选择.

继续 Java中 的continue语句告诉循环返回到它的起始点.但是,如果你正在使用for循环,那么这将继续下一次迭代,这可能不是你想要的,所以这对于while循环实现更好:

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

    successfulTries++;
}
Run Code Online (Sandbox Code Playgroud)

递减 这种方法对我来说似乎很难看,但是如果你想使用for循环来完成你的任务,你可以改为在你的for循环中减去计数器(实质上是'redo'),当你检测到错误的输入时.

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

我建议你使用while循环.


Mik*_*378 5

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

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