2016-04-28 49 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

你错过了'尝试 - ;'? –