我有一个包含大约 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++;
}
最佳答案
如果不知道代码会产生什么结果,就很难看出代码出了什么问题,但无论如何,这都不是一个好方法。
我假设您仅限于一个长数组的输入格式,尽管多维数组可能更有意义,具体取决于它的其他用途。
// double rain[] = new double[1268]; // input
double maxRAINyear[] = new double[(rain.length+11) / 12];
double max = Double.NEGATIVE_INFINITY;
for (int i = 0; i < rain.length; i++)
{
if (rain[i] > max) max = rain[i];
if (i % 12 == 0)
{
maxRAINyear[i / 12] = max;
max = Double.NEGATIVE_INFINITY;
}
}
if (rain.length % 12 != 0) maxRAINyear[maxRAINyear.length-1] = max;
这会计算每 12 个数字的最大值,而不是单独存储它们并对其进行排序。我假设存储了整整几年的时间。如果您想在年底考虑部分年份,则需要对此进行修改。
关于java - 一次查找数组 12 个元素的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43915432/