2017-05-05 38 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