我感到无聊并决定制作剧本,但它不起作用。它不是添加数字,而是将它们视为字符串,例如。 0 + 42 + 0 + 17将是042017.此外,while脚本将永远持续下去。
var money = 0;
var yn = false;
var bye = 0;
var add = window.prompt("How many dollars do you want?");
console.log("You got " + add + " dollars!");
parseFloat(add);
money += add;
add = 0;
console.log(money);
while (money < 1000000001 || bye == 1) {
yn = window.confirm("Do you want more money?");
if (yn) {
add = window.prompt("How many dollars do you want?");
console.log("You got " + add + " dollars!");
parseFloat(add);
money += add;
console.log(money);
} else {
console.log("Goodbye!");
bye = 1;
};
};
if (money > 999999999) {
console.log("You won the game with " + money + " dollars!");
};
答案 0 :(得分:2)
当你这样做时
parseFloat(add);
它将add
转换为浮点值,将其返回。由于您忽略它,add
保持不变为字符串。您可能希望替换add
中的新值,例如
add = parseFloat(add);
此外,您只需转换window.prompt
本身的结果,就像这样
add = parseFloat(window.prompt(...));
答案 1 :(得分:0)
您的while
循环永远存在的原因很可能是因为bye
变量。你的逻辑被打破了。
如果用户对提示回答“否”,则bye
将设置为1
并且永不改回。只要while
为1,bye
循环就会继续,因此它将永远持续下去。
要解决此问题,您可以使用:
while (money < 1000000001 && bye !== 1) {
或
while (money < 1000000001 || bye === 0) {
但是,要存储开/关标志,您应该使用布尔变量,而不是数字:
var bye = false;
// ....
while (money < 1000000001 && !bye) {
// ....
if (yn) {
// ....
} else {
// ....
bye = true;
}
}
另请注意,在if
和while
阻止后,您不需要(读取:不应使用)分号。