繁体   English   中英

我的JavaScript for循环if / else语句怎么了?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM