用JAVA做从键盘输入10个学生的数学、英语和计算机的成绩,按照平均成绩由高到低输出,

用JAVA做 谢啦 从键盘输入10个学生的数学、英语和计算机的成绩,然后按照平均成绩由高到低的顺序依次输出,平均成绩相同的,依次按照数学、英语、计算机的成绩由低到高的顺序输出。

package a;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;

public class Test1 {
class Score{
String name;
float score1;
float score2;
float score3;
float scoreA;
Score(String name, String s1, String s2, String s3){
this.name = name;
score1 = Float.parseFloat(s1);
score2 = Float.parseFloat(s2);
score3 = Float.parseFloat(s3);
scoreA = (score1 + score2 + score3)/3;
}

public String toString(){
return name + "\t" + score1 + "," + score2 + "," + score3;
}
}

public static void main(String[] args) throws Exception{
final int num = 3;
Test1 t = new Test1();
System.out.println("请依次输入姓名,数学,英语,计算机的成绩,用回车分割");
Score[] arr = new Score[num];
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
for (int i=0;i<num;i++){
arr[i] = t.new Score(in.readLine(), in.readLine(), in.readLine(), in.readLine());
}

Arrays.sort(arr, new Comparator<Score>(){

public int compare(Score s1, Score s2) {
if (s1.scoreA < s2.scoreA) return -1;
if (s1.scoreA > s2.scoreA) return 1;
if (s1.score1 < s2.score1) return -1;
if (s1.score1 > s2.score1) return 1;
if (s1.score2 < s2.score2) return -1;
if (s1.score2 > s2.score2) return 1;
if (s1.score3 < s2.score3) return -1;
if (s1.score3 > s2.score3) return 1;
return 0;
}

});
for (int i=0;i<num;i++){
System.out.println(arr[i]);
}
}
}

输出结果
请依次输入姓名,数学,英语,计算机的成绩,用回车分割
a
3
2
1
b
1
2
3
c
2
2
2
b 1.0,2.0,3.0
c 2.0,2.0,2.0
a 3.0,2.0,1.0
温馨提示:答案为网友推荐,仅供参考
相似回答