作为字符串处理数字
我感到无聊,并决定做一个脚本,但它不工作。而不是添加数字,它将它们视为字符串,例如。 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!");
};
当你
parseFloat(add);
其转换add
为浮点值,回报它。既然你忽略了它,add
保持不变。你可能想在add
更换新的价值,这样
add = parseFloat(add);
此外,你可以转换的window.prompt
本身的结果,这样
add = parseFloat(window.prompt(...));
这有帮助,但我仍然需要找出while脚本不工作的原因。 – 2014-10-10 04:56:50
@LouisExley你能解释一下“脚本无法工作”吗? – thefourtheye 2014-10-10 05:27:10
最有可能的原因,你的while
循环是怎么回事永远是因为bye
变量。你的逻辑被打破了。
如果用户回答否提示,bye
将被设置为1
并永不改变。只要bye
为1,while
循环将继续,因此它将永远持续。
为了解决这个问题,你可以使用:
while (money < 1000000001 && bye !== 1) {
或
while (money < 1000000001 || bye === 0) {
然而,存储的开/关标志,你应该使用一个布尔变量,而不是一个数字:
var bye = false;
// ....
while (money < 1000000001 && !bye) {
// ....
if (yn) {
// ....
} else {
// ....
bye = true;
}
}
另外请注意,你不需要(读:不宜用)分号if
和后块。
变量'add'是String类型的,因为window.prompt()方法返回一个String类型的值。无论你使用+添加到一个字符串,就像将一个字符串附加到一个字符串。 [链接] http://www.w3schools.com/jsref/met_win_prompt.asp – rose000 2014-10-10 04:54:19