将数字视为字符串

时间:2014-10-10 04:50:54

标签: javascript string

我感到无聊并决定制作剧本,但它不起作用。它不是添加数字,而是将它们视为字符串,例如。 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!");
};

2 个答案:

答案 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;
    }
}

另请注意,在ifwhile阻止后,您不需要(读取:不应使用)分号。