欲解决此题,我们可以先创建一个二维数组a,用来存取三门的分数,再创建一个一维数组b,用来存取这三门成绩的总分,最后创建一个数组c,用来存取成绩由高到低,你会思考,为什么要创建b和c数组呢,元素不都是总成绩嘛?因为b数组中的索引值可以作为学号的标记,学号等于b数组索引值加一,再通过双层for循环遍历b和c,查找对应的总成绩,并找出语文成绩最高的总分成绩,进行输出,对已经输出的进行赋值为0,表示已经输出,这样就可以做到不会重复的输出相同的成绩,即可完成此题
import java.util.*; public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[][] a=new int[n][3];
int[] b=new int[n];
for(int i=0;i<n;i++) {
for(int j=0;j<3;j++) {
a[i][j]=sc.nextInt();
b[i]=b[i]+a[i][j];
}
}
int[] c=new int[n];
for(int i=0;i<n;i++) {
c[i]=b[i];
}
Arrays.sort(c);
int temp;
for(int i=1;i<n;i++) {
for(int j=0;j<n-i;j++) {
if(c[j]<c[j+1]) {
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
}
}
int yuwen=0;
int v=0;
for(int i=0;i<5;i++) {
int max=0;
for(int j=0;j<n;j++) {
if(c[i]==b[j] ) {
yuwen=a[j][0];
if(yuwen>max) {
v=j;
max=yuwen;
}
}
}
System.out.println((v+1)+" "+b[v]);
b[v]=0;
}
}