【发布时间】:2017-05-11 12:28:27
【问题描述】:
我有一个包含大约 1000 个条目的数组,这些条目每年分为 12 个条目,我试图找到每年的最大值,为此我需要一次读取 12 个值并找到取这 12 个值的最大值,然后从数组中移至接下来的 12 个值,以此类推,直到完成。
为了做到这一点,我制作了一个临时数组来存储 12 个值,以及具有每年最高分数的最终数组。下面的代码不起作用,我不确定为什么,我花了很长时间研究和尝试不同的解决方案,任何帮助将不胜感激:)
//double rain[]= new double [1268]; this is the array declared earlier with data in
double maxRAINyear[]= new double [1200];
double temp [] = new double [12];
int arrayCounter = 0;
int count = 0;
for (int c = 36; c < rain.length; c++) {
temp[count] = rain[c];
if (count == 12){
Arrays.sort(temp);
double max = temp[temp.length - 1];
maxRAINyear[arrayCounter] = max;
arrayCounter++;
count = 0;
}
count++;
}
【问题讨论】:
-
C 的 36 值是从哪里来的?
-
打错了,应该是12,36的值是因为前36个值都是0,这部分程序不需要。
-
在什么情况下不起作用?它会抛出异常还是产生不正确的输出?
-
使用
HashMap<Integer, ArrayList<Double>>会不会更高效?通过这种方式,您可以将每月的降雨量按年份分开,并直接寻址每年的 ArrayList,您的代码将比您向我们展示的更容易阅读。 -
1268 个月,也就是 210 年 8 个月?只是检查。