Restart current iteration in 'for' loop java

我的未来我决定 提交于 2021-02-07 12:25:14

问题


I have a for loop that asks the user to input a number and then does something with it 10 times

I want a check built in that, if the user enters a non accepted input, the loop should restart its current iteration

For example if the user enters something wrong in round 3, round 3 should be restarted.

How do i do that? is there something like a REDO statement in java?


回答1:


something like this ?

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

}



回答2:


You have a couple of choices here.

Continue The continue statement in Java tells a loop to go back to its starting point. If you're using a for loop, however, this will continue on to the next iteration which is probably not what you want, so this works better with a while loop implementation:

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

    successfulTries++;
}

Decrement This approach seems ugly to me, but if you want to accomplish your task using a for loop, you can instead just decrement the counter in your for loop (essentially, 'redo') when you detect bad input.

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

I recommend you use a while loop.




回答3:


Prefer avoiding to reassign the i variable, this may lead to confusion.

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


来源:https://stackoverflow.com/questions/13089765/restart-current-iteration-in-for-loop-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!