我正在尝试使用do / while循环制作基本的头部或尾部游戏。我的问题是,我的提示似乎并没有影响我的变量,因为无论我输入什么,它只是进入下一部分,然后根本不循环。我错过了什么吗?我做错了什么?
var userChoice;
var playAgain;
do {
playAgain = prompt("Do you want to play Heads or tails?");
}
while (playAgain === "Yes") {
userChoice = prompt("Choose Heads or Tails.");
if (userChoice === "Heads") {
coin = Math.random();
if (coin <= 0.5) {
console.log("You Win!");
}
else {
console.log ("You lose");
}
}
if (userChoice === "Tails") {
coin = Math.random();
if (coin > 0.5) {
console.log("You Win!");
}
else {
console.log("You lose");
}
}
playAgain = prompt("Would you like to play again?");
};
答案 0 :(得分:2)
你应该尝试这样:
var userChoice;
var playAgain;
playAgain = prompt("Do you want to play Heads or tails?");
while (playAgain === "Yes") {
userChoice = prompt("Choose Heads or Tails.");
if (userChoice === "Heads") {
coin = Math.random();
if (coin <= 0.5) {
alert("You Win!");
}
else {
alert ("You lose");
}
} else if (userChoice === "Tails") {
coin = Math.random();
if (coin > 0.5) {
alert("You Win!");
}
else {
alert("You lose");
}
}
playAgain = prompt("Would you like to play again?");
}
在不满足do
条件的情况下,do / while循环在while
语句下执行操作。通常,你倾向于避免使用do / while循环,除非你真的需要它,这是非常罕见的。
此外,我将console.log
替换为window.alert
以获得一致性,并避免查看控制台。
答案 1 :(得分:1)
您混淆了do-while
和while
循环的语法。
do-while
循环
do { block } while (condition)
while
循环
while (condition) { block }
你曾试图写一种形式为
的不存在的混合体do { block1 } while (condition) { block2 }
JS解析器将此解释为:
do { block1} while (condition);
{ block2 }
其中通过自动分叉插入机构插入分号。换句话说,只要block1
为真,condition
将继续执行。然后,只有这样,它才会继续执行block2
。
您可以通过在提示语句上放置断点并逐步执行代码来查看它正在执行的操作来自行调试此问题。
或者,在代码上运行类似jshint的程序,它将报告
line 7, col 28, Missing semicolon
这会给你一个关于问题的线索。
解决方案是使用正确的语法重写代码,很可能是一个普通的while
循环。