2017-05-05 65 views
1

我必須返回12個數字數組中最小值的索引號。我每次運行它時都會得到12個結果。這裏是我的代碼:查找數組中最小值的索引號

minRain = leastRain(months); 

public static int leastRain (double[] mon4){ 
    int lowest = (int) mon4[0]; 

    for (int index=1; index<mon4.length; index++){ 
     if (mon4[index]<lowest) 
      lowest = index; 
    } 
    return lowest; 
} 

System.out.println("The month with the lowest amount of rain is: " + (minRain + 1)); 
+0

嗯,而我可以提供一個答案,我敢肯定,我們有一個[XY問題(HTTPS ://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)在這裏,你可以編輯問題並告訴我們「X」:)? – niceman

+0

您最初將「最低」設置爲最低值,然後將其設置爲循環中的索引值。您需要分別跟蹤索引和值。 –

回答

0

您需要存儲lowest_seen和lowest_index。現在你正在比較價值< last_index

2

這是一個愚蠢的錯誤,你做了 - 你指定的變量,而不是一個數組值。這樣做:

public static int leastRain (double[] mon4){ 
    int lowest = 0; 

    for (int index=1; index<mon4.length; index++){ 
     if (mon4[index]<mon4[lowest]) 
      lowest = index; 
    } 
    return lowest; 
} 
+0

哦,我明白了!有效!謝謝 –

3

這條語句的含義是什麼?

int lowest = (int) mon4[0]; 

您將數組的第一個值保存爲最低值,然後再與數組值進行比較。您實際上是將索引與數組值進行比較。

if (mon4[index]<lowest) // comparing lowest as an array value 
    lowest = index;  // saving the index as the lowest value 

你應該這樣做。

if (mon4[index]<mon4[lowest]) // comparing value of 'index' 'vs. 'lowest' index location 
    lowest = index; 
2

要指定數組值的lowest,所以改變它,如下圖所示:

public static int leastRain (double[] mon4){ 
    int lowestIndex = 0;//set index as 0 instead of array value 
    int lowestValue = mon4[0]; 
    for (int index=1; index<mon4.length; index++){ 
     if (mon4[index] < lowestValue) 
      lowestIndex = index; 
    } 
    return lowestIndex; 
} 
+0

我不是在尋找值,而是最低值存儲在 –

+0

的數組地址你可以看看上面的代碼 – developer