在数组中查找最大的平均结果集

时间:2013-11-29 12:17:13

标签: java arrays sorting multidimensional-array

我有一个2D数组,我想找到最大的平均结果集,到目前为止我可以计算每组结果的平均值,但我不知道如何从输出中选择最大值。

我的代码:

static int[][] studentMarksArray = new int[10][3];

for(int i=0;i<10;i++){
  double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;
  System.out.println(total);
 }

尝试解决方案:

for(int i=0;i<10;i++){
  double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;
  double newTotal = total;
  if(newTotal>total){
    newTotal = total;
    System.out.println(newTotal);
  }
}

3 个答案:

答案 0 :(得分:1)

像这样:

 double max = 0;
 for(int i = 0; i < 10; i++){
   double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;
   max = Math.max(max, total);
 }

或者如果你想索引:

 int index = -1;
 double max = 0;

 for(int i = 0; i < 10; i++){
   double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;

   if(Math.max(max, total) == total) {
     index = i;
     max = total;
   }
 }

好的,如果你想在最后得到一个平均数组,请执行以下操作:

int index = -1;
double max = 0;
double [] averages = new double[10];

 for(int i = 0; i < 10; i++){
   double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;
   averages[i] = total;
   if(Math.max(max, total) == total) {
     index = i;
     max = total;
   }
 }

答案 1 :(得分:0)

在变量初始化后添加此内容

  int largest=0,lp=0;

在forloop结束之前添加此项但在计算总数

之后
  if(largest<total){
    largest=total;lp=i;
  }

在forloop结束时,你将在变量max中具有最大的平均值,并且它在变量i中的位置。

答案 2 :(得分:0)

您可以在每一步将outPut保存到优先级队列(以自然顺序保存元素),在最后一步中将pull()保存为此优先级队列中的最高值。

import java.util.PriorityQueue;

public class Test1 {

public static void main(String[] arg){

    int[][] studentMarksArray = new int[10][3];

    PriorityQueue<Double> pq = new PriorityQueue<Double>();

    for(int i=0;i<10;i++){
      double total = (studentMarksArray[i][0]*studentMarksArray[i][1]*studentMarksArray[i][2])/3;
      System.out.println(total);
      pq.add(total);
     }
    System.out.println(pq.poll());;
}
}