假设一个班有共n个人,每个人都有m门课程成绩。 (1)请对每个人的成绩按总分进行排序。 (2)按每一门课程的成绩进行排序。 要求:m、n的值及所有的成绩都是通过键盘输入。

假设一个班有共n个人,每个人都有m门课程成绩。 (1)请对每个人的成绩按总分进行排序。 (2)按每一门课程的成绩进行排序。 要求:m、n的值及所有的成绩都是通过键盘输入。

代码如下:


public class Test {

    //根据总成绩排序
    public static void sortbytotal(int[][] score,int n,int m){
        int i,j,t;
        int sum1=0,sum2=0;
        for(i=0;i<n-1;i++){
            for(j=0;j<n-1-i;j++){
                sum1 = 0;
                sum2 = 0;
                for(int k=0;k<m;k++){
                    sum1 += score[j][k];
                    sum2 += score[j+1][k];
                }
                if(sum1 < sum2) { //从大到小排序
                    //交换
                    for(int k=0;k<m;k++){
                        t = score[j][k];
                        score[j][k] = score[j+1][k];
                        score[j+1][k] = t;
                    }
                }
            }
        }
    }
    //根据课程排序
    public static void sortbykc(int[][] score,int n,int m,int kc){
        int i,j,t;
        for(i=0;i<n-1;i++){
            for(j=0;j<n-1-i;j++){
                if(score[j][kc] < score[j+1][kc]) { //从大到小排序
                    //交换
                    for(int k=0;k<m;k++){
                        t = score[j][k];
                        score[j][k] = score[j+1][k];
                        score[j+1][k] = t;
                    }
                }
            }
        }
    }
    
    public static void show(int[][] score,int n,int m){
        for(int i=0;i<n;i++){
            for(int j= 0;j<m;j++){
                System.out.print(score[i][j]+ " ");
            }
            System.out.println();
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int n,m;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入人数:");
        n = sc.nextInt();
        System.out.print("请输入课程数:");
        m = sc.nextInt();
        int[][] score = new int[n][m];
        System.out.println("请输入"+n+"人"+m+"门课的成绩:");
        for(int i = 0;i<n;i++){
            for(int j=0;j<m;j++){
                score[i][j] = sc.nextInt();
            }
        }
        //按总成绩排序
        sortbytotal(score,n,m);
        //输出
        show(score,n,m);
        //按某门课程排序
        System.out.println("按某门课程排序,请输入课程序号(1-课程数):");
        int kc = sc.nextInt();
        sortbykc(score,n,m,kc);
        //输出
        show(score,n,m);
    }

}


排序 可以用这个方法。其他的就是输入、添加数据了。

Collections.sort(stus, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                // 根据属性进行排序
                if (o1.getScore()>o2.getScore()) {
                    return 1;
                }
                if (o1.getScore()==o2.getScore()) {
                    return 0;
                }
                return -1;
            }
        });