2016-04-28 76 views
-1

我想知道如果輸入成功,你將如何離開for循環,用戶將有3次嘗試輸入0以上的數字。它爲他們工作是不成功的,但它仍然使我即使輸入了正確的號碼,也要輸入3次。輸入成功後離開for循環

for (var attempts = 3; attempts--;) { 
    var input = window.prompt("Please enter a number"); 
    if (input < 0) { 
     document.write("Try Again"); 
    } 
} 
document.write("Grand"); 
+0

添加在你的'if' – jDo

回答

1

這裏有問題,你的代碼:

  1. 你沒有else聲明。如果他們沒有輸入正確的代碼,它不會有條件地處理任何其他其他。無論輸入如何,總是處理「Grand」輸出。
  2. < 0的條件不是你想要的。如果他們輸入0它仍然會通過支票並說「再試一次」
  3. 對於您的實際問題的答案,只需在(缺少的)else聲明中添加一箇中斷。

試試這個:

<script> 
for (var attempts = 1; attempts <= 3; attempts++) { 
    var input = window.prompt("Please enter a number"); 
    if (input <= 0) { 
    if (attempts == 3) { 
     //this is the 3rd failure 
     document.write("You have failed 3 times!"); 
     break; 
    } else { 
     //this is for the 1st and second failures 
     document.write("Try Again<br>"); 
    } 
    } else { 
    document.write("Grand"); 
    break; 
    } 
} 
</script> 
+0

您的解決方案不正確。在你輸入一個正數之後,它會再次詢問另一個。 – AaronC

+0

糟糕,誤讀了這個問題。我認爲「正確的」答案是0.我會更新,謝謝。 –

+0

謝謝。但還有一件事。當一個負數輸入3次時,再次輸出3次到屏幕。我知道這是因爲循環,但我怎麼只輸出一次或代替「不成功」或類似 – AaronC

1

您可以使用break語句留下循環。

for (var attempts = 3; attempts > 0; attempts--) { 
    var input = window.prompt("Please enter a number"); 
    if (input < 0) { 
     if(attempts > 1){ 
      document.write("Try Again");  
     }else{ 
      document.write("No more attempts!"); 
     } 

    }else{ 
     break; 
    } 
} 
+0

含有'break'的'else'然而,這是最接近的,當一個負數輸入3次。 「再試一次」在屏幕上輸出3次。 – AaronC

+0

更新了它,現在只打印兩次「再試一次」。如果用戶第三次輸入一個負數而不顯示任何內容。 – Keiwan

+0

現在,它還會在上次失敗嘗試後打印一條消息。 – Keiwan

0

有很多方法可以做到這一點,這裏是一個:

var attempts = 3, valid_input = false, input; 

while (attempts > 0 && valid_input === false) { 
    input = parseInt(window.prompt("Please enter a number"), 10); 
    if (input <= 0) { 
     alert("Try Again"); 
    } else { 
     valid_input = true; 
    } 
} 
if (valid_input === true) { 
    document.write("Grand"); 
} else { 
    document.write("Failed 3 times"); 
} 
+0

你錯過了'嘗試 - ;'? –