10

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

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

例如,如果用户在第 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 循环中的计数器(本质上是“重做”)。

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 回答