3 回答
TA贡献1794条经验 获得超7个赞
问题是您在相同的 if...else 语句中检查卡总数,但在检查“0”或“1”输入之后。因此,如果用户输入“0”或“1”,您的代码将处理这些条件,并且永远不会进行卡总检查。
有很多方法可以解决这个问题。一种解决方案是将卡总检查移至主 if...else 逻辑之后的单独 if 条件中。像这样的东西:
for(i = 0; i<3;){
var input = prompt(`Which makes your card total ${cardTotal}. Would you like to draw another card? (Type in 1 for yes, 0 for no, or select cancel to return to home.)`);
if (input === null){
// ...
}
else if (input === "1"){
// ...
}
else if (input === "0"){
// ...
}
// Keep separate from the main if...else logic to ensure it always gets run.
if (cardTotal >=22){
i+=3;
}
}
TA贡献1839条经验 获得超15个赞
问题是它是 的一部分else,所以只要他们输入1或0或null,它就永远不会命中。您可能只想最后将其移至其自身状态:
let cardRange = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var cardOne = cardRange[Math.floor(Math.random() * cardRange.length)];
var cardTwo = cardRange[Math.floor(Math.random() * cardRange.length)];
var cardTotal = cardOne + cardTwo;
var comScore = 18;
var i;
var extracard;
alert(`Your card numbers are ${cardOne} and ${cardTwo}!`);
//user gets to draw 5 cards in total
for (i = 0; i < 3;) {
var input = prompt(`Which makes your card total ${cardTotal}. Would you like to draw another card? (Type in 1 for yes, 0 for no, or select cancel to return to home.)`);
if (input === null) {
i += 3;
window.location.replace("http://stackoverflow.com");
} else if (input === "1") {
i++;
extraCard = cardRange[Math.floor(Math.random() * cardRange.length)];
alert(`This card's number is ${extraCard}!`);
cardTotal = extraCard + cardTotal;
} else if (input === "0") {
i += 3;
} else {
alert("Lmao wrong input you rart");
}
//problem below
if (cardTotal >= 22) {
i += 3;
}
//not working, loop will not end.
}
function pontoonOutput() {
if (cardTotal > comScore && cardTotal < 22) {
document.write(`You got ${cardTotal}, and the AI player got ${comScore}. Which means.... You win!`);
} else if (cardTotal === comScore) {
document.write(`You got ${cardTotal}, and the AI player got ${comScore}. Which means.... It is a tie!`);
}
//this outputs if the user gets above 22
else if (cardTotal >= 22) {
alert("BUST!");
document.write(`Your card number is ${cardTotal}, which is above 21. Which means.... You lose!`);
}
//what should happen if line 29 is picked up. ^
else {
document.write(`You got ${cardTotal}, and the AI player got ${comScore}. Which means.... You lose!`);
}
}
pontoonOutput();
TA贡献2003条经验 获得超2个赞
尝试使用该break语句。试试这个:
for(i = 0; i<3;){
var input = prompt(`Which makes your card total ${cardTotal}. Would you like to draw another card? (Type in 1 for yes, 0 for no, or select cancel to return to home.)`);
if (input === null){
// ...
}
else if (input === "1"){
// ...
}
else if (input === "0"){
// ...
}
if (cardTotal >=22){
//i += 3;
break;
}
}
现在我明白了,它需要分开
添加回答
举报