2017-04-09 37 views
2

每當我輸入一個數字時,即使數字大於另一個數字,它也表示數字太低。當我輸入零或根本不輸入任何內容時,表示您的電話號碼太低。我不明白,我已經看過我的代碼了很多次,但我仍然沒有發現任何問題。我怎麼會猜測JavaScript中的數字遊戲不起作用?

這是我的代碼:

var answer = prompt("Guess a number between 1 and 100"); 
var number = confirm(Math.round(Math.random()*100)); 

if (number === answer) { 
    confirm("You win!"); 
} else if(number < answer){ 
    confirm("Your number was too low!"); 
} else if (number > answer) { 
    confirm("Your number was too high!"); 
} 
+0

你試圖字符串比較數 –

+0

@PaulS .:這不是問題 –

回答

1

var answer = prompt("Guess a number between 1 and 100"); 
 
var ai_nswer = Math.round(Math.random() * 100); 
 
var number = confirm(ai_nswer); 
 

 
if (ai_nswer == answer) { 
 
    confirm("You win!"); 
 
} else if(ai_nswer > answer){ 
 
    confirm("Your number was too low!"); 
 
} else if (ai_nswer < answer) { 
 
    confirm("Your number was too high!"); 
 
}

除了你正在使用confirm方法是不妥當的邏輯也成問題。你的條件是錯誤的高/低。您應該將隨機答案的值存儲在臨時值中,然後再確認它,因爲confirm返回布爾值,而不是輸入值。

1

confirm函數返回一個布爾(truefalse),所以在下面實際上行number變量持有一個布爾值。

var number = confirm(Math.round(Math.random()*100)); 

這就搞砸了你的邏輯。

只需將其更改爲:

var number = Math.round(Math.random()*100); 
confirm(number); 

另一個通知

prompt("Guess a number between 1 and 100");返回一個字符串,所以是100%清楚,你應該值轉換爲數字:

var answer = Number(prompt("Guess a number between 1 and 100")); 
1

嘗試轉換answer使用parseInt()函數首先爲整數值。

var answer = parseInt(prompt("...")); 
1

變量answernumber不是有同樣的,在VAR answer轉換使用parseInt函數,看到我的回答:

var answer = prompt("Guess a number between 1 and 100"); 
 
var number = confirm(Math.round(Math.random()*100)); 
 
answer=parseInt(answer); 
 
if (number === answer) { 
 
    confirm("You win!"); 
 
} else if(number < answer){ 
 
    confirm("Your number was too low!"); 
 
} else if (number > answer) { 
 
    confirm("Your number was too high!"); 
 
}