2014-03-06 62 views
0

如何在循環時類型檢查並返回數組的最大數量?我無法讓我的代碼在下面工作。如何在循環時返回數組的最大數量

var v = prompt("Enter a Value", "0"); 
var w = prompt("Enter a Value", "0"); 
var x = prompt("Enter a Value", "0"); 
var y = prompt("Enter a Value", "0"); 
var z = prompt("Enter a Value", "0"); 
var num1 = parseInt(v, 10); 
var num2 = parseInt(w, 10); 
var num3 = parseInt(x, 10); 
var num4 = parseInt(y, 10); 
var num5 = parseInt(z, 10); 

var numArray = [num1, num2, num3, num4, num5]; 
var highest = 0; 
for (var i = 0; i <= numArray.length; i++) { 
    if (numArray[i] > highest) { 
     highest = numArray[i]; 
    } 
} 

return(highest); 
+1

您可能需要更清楚地界定什麼是「不工作」的意思。首先,將'highest'設置爲數組的第一個元素,然後從第二個元素開始循環。如果你只有負數,你的代碼肯定會失敗。 – Floris

+0

工作正常:http://jsfiddle.net/5nq6b/ - 你應該**返回**的結果?該代碼,因爲它不會給你任何輸出作爲警報(在小提琴) –

+0

@Scrowler,它不工作在我的小提琴,現在它!謝謝! – user3369726

回答

1

你可能想這樣做:

var numArray = [num1, num2, num3, num4, num5]; 
var highest = numArray[0]; 
for (var i=1; i<=numArray.length; i++){ 
    if (numArray[i]>highest){ 
     highest=numArray[i]; 
    } 
} 

return(highest); 

所不同的是:如果你設置highest = 0,你打折的可能性最高的輸入的數值是負的 - 所以-1,-2,-3,-4,-5作爲輸入,返回值仍然是0。通過說「我首先看的是:這是最高的定義」,然後將其他值(第二,第三等)與您的「當前最好」進行比較,您可以避免這種錯誤。這種事情在軟件中出現在各種場合 - 很多時候「第一次迭代」必須有所不同。在這種情況下,我完全有效地將第一次迭代從循環中取出。

+0

非常感謝Floris的幫助,你能告訴我改變numArray [0]和var i = 1會有什麼影響嗎?看起來循環是雙向的。 – user3369726

+0

我試圖解釋爲什麼循環的小改變會有所作爲。讓我知道它是否合理。 – Floris

+0

再次感謝弗洛里斯花時間解釋它。它仍然有點含糊,但我認爲我有這種感覺。如果它是var i = -1呢? – user3369726

5

你可以簡單地這樣做:

var highest = Math.max.apply(null, numArray);