我有一个for循环,要求用户输入一个数字,然后用它做10次
我想要一个内置的检查,如果用户输入一个不接受的输入,循环应该重新启动它当前的迭代
例如,如果用户在第3轮输入错误,则应重新启动第3轮。
我该怎么做?在java中有类似REDO语句吗?
答案 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);
}