[英]javascript for loop with nested if/else statement not executing, not sure what's gone wrong
[英]What is wrong with my JavaScript for loop if/else statement?
为什么我的代码不起作用? 当我正确输入数字时,它不会向我显示window.alert
,它是正确的。
这是问题所在:编写一个在1到10之间选择一个随机数的程序。给用户5个猜测(使用循环)来猜测该数字。 如果他们错了,请告诉他们。 如果它们是正确的,则告诉他们并退出循环。 在程序末尾,向他们显示实际数字。
<script>
var num = Math.floor(Math.random()*10 + 1);
var guess = parseInt(window.prompt("Enter a number!"));
for (var x=1; x<=5; x++) {
if (num == guess) {
window.alert("You are right!");
break;
}
else {
window.prompt("You were wrong, try again!");
continue;
}
}
document.write("The number was "+num);
</script>
您没有使用后续猜测。 在循环内重新提示时,您需要更新guess
:
guess = parseInt(window.prompt("You were wrong, try again!"));
// ^^^^^^^^^^^^^^^^^-------------------------------------------^
例:
var num = Math.floor(Math.random() * 10 + 1); var guess = parseInt(window.prompt("Enter a number!")); for (var x = 1; x <= 5; x++) { if (num == guess) { window.alert("You are right!"); break; } else { guess = parseInt(window.prompt("You were wrong, try again!")); continue; } } console.log("The number was " + num);
另外:在页面的主要解析完成后(或实际上完全没有),不要使用document.write
。 而是使用DOM向页面添加元素以显示要显示的内容。
另外,由于循环中没有其他内容,因此不需要continue
。
然后是Ben Snaize的观点 :该代码实际上使用户猜测了6次,尽管它抛弃了最终的猜测。
基于@Milaci的答案版本,仅有5个猜测。 此外,它现在可以正确使用最后的猜测。
var num = 5; //Math.floor(Math.random()*10+1); var guess = parseInt(window.prompt("Enter a number!")); if (num === guess) { window.alert("You are right!"); } else { for (var x = 1; x < 5; x++) { guess = parseInt(window.prompt("You were wrong, try again!")); if (num === guess) { window.alert("You are right!"); break; } } } document.write("The number was " + num);
您正在生成一个随机数,然后得到一个猜测,然后循环五次以查看两个数字是否相同。 您应该在循环内得到一个新的猜测。
您应该使用两次猜测,一次是第一次,另一次是在for循环内,以获取用户插入的值。 我使用静态5值来方便测试
var num=5;//Math.floor(Math.random()*10+1);
var guess=parseInt(window.prompt("Enter a number!"));
for(var x=1; x<=5; x++){
if (num==guess){
window.alert("You are right!");
break;
}
else{
guess=parseInt(window.prompt("You were wrong, try again!"));
}
}
document.write("The number was "+num);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.