Java二维数组

2. 设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和 该学生的成绩、该学生的总成绩 

import java.util.Arrays;

public class Q3{
    public static void main(String[] args) {
        // 设 names 数组中存放学生姓名
        String[] names = { "安琪拉" , "王昭君" , "蔡文姬" , "妲己" , "张良" };
        // 设 courses 数组中依次存放三门课程的名称
        String[] courses = { "C++" , "Java" , "Python" };
        // 设 scores 数组中依次存储的是 names 数组中各个学生的 C++ 、Java 、Python 课程的成绩
        int[][] scores = {
                { 90 , 89 , 75 } ,
                { 59 , 40 , 100 } ,
                { 100 , 99 , 80 } ,
                { 80 , 61 , 61 } ,
                { 60 , 100 , 99 } ,
        };
        //设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和该学生的成绩、该学生的总成绩

        int[] sumArr = new int[scores.length];         //定义一个新数组用来存储总分,数组的长度为成绩的个数scores.length
        for (int i = 0; i < scores.length; i++) {       //外层循环遍历二维数组scores的每个子数组,从下标0开始
            int sum = 0;            //定义一个变量sum用来存储总分,刚开始是sum的值为0
            for (int j = 0; j < scores[i].length; j++) {     //内层循环遍历二维数组中的子数组scores[i]中的每个元素,从下标为0开始,长度小于子数组的长度
                sum += scores[i][j];      //在内层循环中,通过累加将子数组中的每个成绩累加到sum中,得到该子数组的总分
            }
            sumArr[i] = sum;       //将每个子数组的总分赋值给新数组sumArr的相应索引位置sumArr[i]
        }

        for (int i = 0; i < scores.length ; i++) {
            for (int j = 0; j < scores[i].length + 1; j++) {
                if (sumArr[j] < sumArr[j+1]){//总分排序
                    int temp = sumArr[j];
                    sumArr [j] = sumArr[j + 1];
                    sumArr [j + 1] = temp;

                    int[] temp1 = scores[j];//成绩排序
                    scores[j] = scores[j + 1];
                    scores[j + 1] = temp1;

                    String name = names[j];//姓名排序
                    names[j] = names[j+1];
                    names[j+1] = name;
                }
            }
        }
        System.out.println(Arrays.toString(sumArr));

        for( int i = 0 ; i < scores.length ; i++ ){
            System.out.print( names[ i ] + " => " ); // 输出学生姓名
            for( int j = 0 ; j < scores[ i ] .length ; j++ ){
                System.out.print( courses[ j ] + ":");// 输出课程名称
                System.out.print( scores[ i ][ j ] ); // 输出课程成绩
                if( j < scores[ i ] .length - 1 ) {
                    System.out.print( " , " );
                }
            }
            System.out.print("\t总分:" + sumArr[i]);
            System.out.println();
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值