在'中重新启动当前迭代;对于';循环java

在'中重新启动当前迭代;对于';循环java,java,for-loop,Java,For Loop,我有一个for循环,要求用户输入一个数字,然后用它做10次 我想要一个内置的检查,如果用户输入一个不被接受的输入,循环应该重新开始它当前的迭代 例如,如果用户在第三轮输入错误,则应重新启动第三轮 我该怎么做?java中有类似于REDO语句的东西吗?类似这样的东西吗 for(int i=0; i<10; i++){ if(input wrong){ i=i-1; } } 对于(inti=0;i您有两个选择 继续 Java中的continue语句告诉循环返回其起点。但

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

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

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

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

类似这样的东西吗

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

}

对于(inti=0;i您有两个选择

继续 Java中的continue语句告诉循环返回其起点。但是,如果使用for循环,这将继续进行下一次迭代,这可能不是您想要的,因此使用while循环实现时效果更好:

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

    successfulTries++;
}
int successfulTries=0;
while(成功<10次)
{
字符串s=getUserInput();
如果(isInvalid)
继续;
成功的++;
}
减量 这种方法在我看来很难看,但是如果您想使用for循环完成任务,那么当您检测到错误的输入时,您可以只减少for循环中的计数器(本质上是“redo”)

for(int i = 0; i < 10; i++)
{
    String s = getUserInput();
    if(isInvalid(s))
    {
        i--;
        continue;
    }
}
for(int i=0;i<10;i++)
{
字符串s=getUserInput();
如果(isInvalid)
{
我--;
继续;
}
}

我建议您使用while循环。

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

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

用于(int i=0;听着,你试过什么?你和谁上的学校一样?使用
Do while
循环,而不是
for
循环。我就是这么做的,只是想知道是否有更优雅的方法。@Killerpixler是的,使用
Do while
循环,而不是减少
i
值。我认为改变循环控制变量的值循环内部的可编辑性往往令人困惑。在这种情况下很简单,但在一个大循环中发生的事情可能并不明显。我更喜欢@Mik378发布的答案:使用内部循环重新提示输入,直到收到有效的输入。@DaveCosta这对于大循环来说绝对正确。但是你不认为拥有一个n有点昂贵吗ested loop???@chaitanya10拥有这种内部循环不会降低性能。