2016-05-07 67 views
0

我做了一個隨機數猜測遊戲,你可以在其中確定最大值和最小值。我檢查了我的整個代碼兩次,但似乎無法找到解決方案,爲什麼它不起作用。我將這個腳本鏈接到解釋document.getElementById("randNum").innerHTML部分的HTML文件。 我也想說我對編碼很陌生,所以我可能忽略了一些簡單的東西。無論如何,這是我的代碼。這個隨機數猜測遊戲有什麼問題?

var max = prompt("Max guessing number?"); 

if (max <= 2) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
} else { 

    var min = prompt("What's the smallest number you can guess?"); 
    if (min >= (max - 1) || min <= 0) { 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else { 

    number = Math.floor(Math.random() * (max - min + 1) + min); 

    guess = prompt("What's your guess?"); 

    if (guess > max || guess < min) { 

     document.getElementById("randNum").innerHTML = "Invalid entry"; 

    } else if (guess == number) { 

     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 

    } else { 

     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 

    } 
    } 
} 

編輯:我改變了隨機數生成器的工作方式,但我仍然收到錯誤。而添加更多細節,頁面上顯示無效項

+0

您是否在瀏覽器控制檯中看到錯誤? – Andy

回答

0

兩個問題:

通過prompt返回的數據類型爲字符串,因此計算可能出問題,如果你不明確地將其轉換爲數字。您可以通過將單一+運營商這樣做,像+prompt('....');

其次,要獲得分鐘最大之間的隨機數應該是不同的方式。更改此:

number = Math.floor((Math.random() * max) + min); 

到:

number = Math.floor(Math.random() * (max - min + 1) + min); 

改正的代碼:

var max = +prompt("Max guessing number?"); 
 

 
if (max <= 2) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 
} else { 
 

 
    var min = +prompt("Wat is het kleinste nummer dat je kan raden?"); 
 
    if (min >= (max - 1) || min <= 0) { 
 
    document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else { 
 

 
    number = Math.floor(Math.random() * (max - min + 1)) + min; 
 
    console.log(min, max, number, (max - min + 1)); 
 

 
    guess = +prompt("What's your guess?"); 
 

 
    if (guess > max || guess < min) { 
 

 
     document.getElementById("randNum").innerHTML = "Invalid entry"; 
 

 
    } else if (guess == number) { 
 

 
     document.getElementById("randNum").innerHTML = "Good job! You guessed the number!"; 
 

 
    } else { 
 

 
     document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!"; 
 

 
    } 
 
    } 
 
}
<div id="randNum" ></div>

0

這似乎是真的錯了,我:

number = Math.floor((Math.random() * max) + min); 

因此,您要告訴隨機數生成器生成一個最大值爲max的數字,並添加min值。再說,如果我舉兩個數字:

15, 18 

而且如果Math.random() * max等於17,然後就變成:

17 + 15 = 32 

你可能需要做的是這樣的:

number = Math.floor(Math.random() * (max - min + 1) + min); 

以上代碼確保隨機數不超過maxmin之間的差值,當我們添加min的值,我們有在該範圍之間生成的隨機數。

這將確保該號碼在maxmin之間。