我有一個for循環,要求用戶輸入一個數字,然後做一些事情與它10倍重新啓動當前迭代的for循環的Java
我想建一個檢查,如果用戶輸入一個未接受的輸入,循環應該重新開始其當前迭代
例如,如果用戶在第3輪輸入錯誤,第3輪應該重新啓動。
我該怎麼做?有沒有像java中的REDO語句?
我有一個for循環,要求用戶輸入一個數字,然後做一些事情與它10倍重新啓動當前迭代的for循環的Java
我想建一個檢查,如果用戶輸入一個未接受的輸入,循環應該重新開始其當前迭代
例如,如果用戶在第3輪輸入錯誤,第3輪應該重新啓動。
我該怎麼做?有沒有像java中的REDO語句?
這樣的事情?
for(int i=0; i<10; i++){
if(input wrong){
i=i-1;
}
}
這就是我所做的,只是想知道是否有更優雅的方式。 – Killerpixler
@Killerpixler是的,使用「do-while」循環而不是減少「i」值。 –
我認爲改變循環內循環控制變量的值往往會令人困惑。在這種情況下足夠簡單,但在一個很大的循環中,它可能是不明顯的。我更喜歡@ Mik378發佈的答案:使用內部循環重新提示輸入,直到收到有效輸入。 –
這裏有幾個選擇。
繼續 的繼續在Java中語句告訴循環回到它的起點。如果你使用一個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循環。
想要避免重新指定i
變量,這可能會導致混淆。
for(int i=0; i<10; i++){
String command = null;
do{
command = takeCommandFromInput();
} while(isNotValid(command));
process(command);
}
好的,你試過了嗎? – kosa
你和[這傢伙]去了同一所學校嗎?(http://stackoverflow.com/questions/13066736)? –
使用'do-while'循環,而不是'for'循環。 –