2014-10-10 69 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和後塊。