我有一个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);
}
}
答案 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());;
}
}