2014-10-10 47 views
0

我感到无聊,并决定做一个脚本,但它不工作。而不是添加数字,它将它们视为字符串,例如。 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

变量'add'是String类型的,因为window.prompt()方法返回一个String类型的值。无论你使用+添加到一个字符串,就像将一个字符串附加到一个字符串。 [链接] http://www.w3schools.com/jsref/met_win_prompt.asp – rose000 2014-10-10 04:54:19

回答

2

当你

parseFloat(add); 

其转换add为浮点值,回报它。既然你忽略了它,add保持不变。你可能想在add更换新的价值,这样

add = parseFloat(add); 

此外,你可以转换的window.prompt本身的结果,这样

add = parseFloat(window.prompt(...)); 
+0

这有帮助,但我仍然需要找出while脚本不工作的原因。 – 2014-10-10 04:56:50

+0

@LouisExley你能解释一下“脚本无法工作”吗? – thefourtheye 2014-10-10 05:27:10

0

最有可能的原因,你的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和后块。