正面或反面游戏 javascript do/while 循环
Heads or tails game javascript do/while loop
我正在尝试使用 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?");
};
您应该这样尝试:
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/while 循环执行 do
语句下的操作,而 while
条件不满足。通常,您倾向于避免 do/while 循环,除非您真的需要它,这种情况很少见。
此外,我将 console.log
替换为 window.alert
以保持一致性并避免查看控制台。
您混淆了 do-while
和 while
循环的语法。
do-while
循环是
do { block } while (condition)
while
循环是
while (condition) { block }
您尝试编写一个不存在的混合体,形式为
do { block1 } while (condition) { block2 }
JS 解析器会将其解释为:
do { block1} while (condition);
{ block2 }
其中分号是由自动分号插入机制插入的。换句话说,只要 condition
为真, block1
就会继续一遍又一遍地执行。然后,只有到那时,它才会继续执行 block2
.
您可以自己调试这个问题,方法是在提示语句上放置一个断点,然后单步执行代码以查看它在做什么。
或者,运行 像 jshint 这样的程序覆盖你的代码,它会报告
line 7, col 28, Missing semicolon
这会给您提供有关问题的线索。
解决方案是使用正确的语法重写您的代码,很可能是一个普通的旧 while
循环。
我正在尝试使用 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?");
};
您应该这样尝试:
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/while 循环执行 do
语句下的操作,而 while
条件不满足。通常,您倾向于避免 do/while 循环,除非您真的需要它,这种情况很少见。
此外,我将 console.log
替换为 window.alert
以保持一致性并避免查看控制台。
您混淆了 do-while
和 while
循环的语法。
do-while
循环是
do { block } while (condition)
while
循环是
while (condition) { block }
您尝试编写一个不存在的混合体,形式为
do { block1 } while (condition) { block2 }
JS 解析器会将其解释为:
do { block1} while (condition);
{ block2 }
其中分号是由自动分号插入机制插入的。换句话说,只要 condition
为真, block1
就会继续一遍又一遍地执行。然后,只有到那时,它才会继续执行 block2
.
您可以自己调试这个问题,方法是在提示语句上放置一个断点,然后单步执行代码以查看它在做什么。
或者,运行 像 jshint 这样的程序覆盖你的代码,它会报告
line 7, col 28, Missing semicolon
这会给您提供有关问题的线索。
解决方案是使用正确的语法重写您的代码,很可能是一个普通的旧 while
循环。