2013-05-07 215 views
2

我懷疑在編寫我的「lowestScore」方法時出錯(我或多或少地否定了我的「largestScore」方法,因爲它始終返回正確的值(來自陣列的最高分數)。但由於某些原因,我的lowestScore方法要麼只是返回數組或一些任意的號碼,甚至沒有從陣列中的第一個元素。任何想法?計算最小值與計算最大值

public static double highestScore(double[] scores) 
    { 
     double max = scores[0]; 
     for (int i=0; i < scores.length; i++) { 
     if (scores[i] > max) { 
      max = scores[i]; 
     } 
     } 
     return max; 
    } 

    public static double lowestScore(double[] scores) //possible problem some where in 
    {             //here? 
     double min = scores[0]; 
     for (int i=0; i > scores.length; i++) { 
     if (scores[i] < min) { 
      min = scores[i]; 
     } 
     } 
     return min; 
    } 
+0

編輯該問題只留下實際問題。使問題易於閱讀,使他們也更容易回答。 – tucuxi 2013-05-07 14:28:05

+0

明白了。感謝指針,非常有意義。 – codenewb 2013-05-07 14:47:25

回答

6

沒錯,問題是在lowestScore。你倒<>,但你仍然應該遍歷你的整個數組。在你的代碼中,i > scores.length(最初是0 > scores.length)的計算結果爲false,所以循環不執行,min總是等於scores[0]

變化

for (int i=0; i > scores.length; i++) 

for (int i=0; i < scores.length; i++) 
+0

斑點。 :) – Devolus 2013-05-07 14:27:30

+0

它的這些小事情需要幾小時才能發現。在嘗試弄清楚之後很高興知道,我可以來這裏看看正確的方式,並且真正學到一些東西。謝謝! – codenewb 2013-05-07 14:46:23

2
public static double lowestScore(double[] scores) //possible problem some where in 
{             //here? 
    double min = scores[0]; 
    for (int i=0; i > scores.length; i++) { 
    if (scores[i] < min) { 
     min = scores[i]; 
    } 
    } 
    return min; 
} 

for (int i=0; i > scores.length; i++) {。條件說「如果i大於scores.length,則繼續循環」。當i現在被初始化爲0時,它永遠不會大於數組的大小。因此,循環立即結束,返回值是數組的第一個元素,如在循環之前設置的那樣。

P.S.很容易就可以避免這個錯誤,你只是在將highestScore更改爲lowestScore時將<>反轉。

+0

感謝您的輸入!對於像我這樣的初學者來說,這種反饋是無價的。 – codenewb 2013-05-07 17:27:35