录入10个学生的数学语文英语的三科成绩 计算每科的平均成绩计算出每个人的总成绩 并找出每科成绩的最高分与最低分

import java.util.Scanner;
/*
录入10个学生的数学语文英语的三科成绩
计算每科的平均成绩计算出每个人的总成绩
并找出每科成绩的最高分与最低分
*/
public class Betty {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int[][] scores = new int[3][3];//定义一个二维数组,用来存储每个学生的三科成绩
        /*
         * 录入10个学生的数学 语文 英语三科成绩
         * */
        for(int i=0;i<scores.length;i++) {
            System.out.println("请输入第"+(i+1)+"个同学的成绩:");
            for(int j=0;j<scores[i].length;j++) {
                scores[i][j] = scan.nextInt();
            }
        }
        /*
         * 算出每科总成绩 和平均值 并找出每科成绩最大值和最小值
         * 规律:
         * 第一科总成绩
         * 第一个人第一科成绩         第二个人第一科成绩                  第三个人第一科成绩
         * scores[0][0]  +   scores[1][0]    +   scores[2][0]
         * 由此可见 使用for循环遍历学生和成绩时,暂时不变的应该在外层循环,所以科目成绩应该在外层循环 
         * 而学生应该在内层循环
         * */
        int[] classSum = new int[scores[0].length];//定义数组classSum用于存储每科成绩的总和。
        double[] classAvg = new double[scores[0].length];//定义数组classSum用于存储每科成绩的平均值。
        int[] classMax = new int[scores[0].length];//定义数组classMax用于存储每科成绩最大值。
        int[] classMin = new int[scores[0].length];//定义数组classMin用于存储每科成绩最小值。
        for(int i=0;i<scores[0].length;i++) {
            int sum = 0;//定义sum目的在于求每科成绩之和,每科成绩循环完成都要进行归零。
            int max = scores[0][i];//假设第一个人每科成绩最大,将第一个同学与其他同学成绩进行比较,不能是scores[j][0],因为不能每科不一样的成绩都用第一科来比较,科目不同。
            int min = scores[0][i];//假设第一个人每科成绩最小,将第一个人和其他同学成绩比较。
            for(int j=0;j<scores.length;j++) {
                sum+=scores[j][i];
                if(max<scores[j][i]) {
                    max = scores[j][i];
                }
                if(min>scores[j][i]) {
                    min = scores[j][i];
                }
            }
            classMax[i] = max;//内层循环结束后第i科成绩最大值才会确定,所以在内层循环结束之后将最大值存入数组classMax中。不可放在内层for循环中。
            classMin[i] = min;//将最小值存入数组classMin中。
            classSum[i] = sum;//将每科计算好的总和存入数组classSum中
            classAvg[i] = sum/scores[i].length;//将平均值存入数组classAvg中
        }
        
        /*
         * 计算出每个人的总成绩
         * 由于是求每个人的总成绩,规律如下:
         * 第一个同学第一科成绩      +          第一个同学第二课程         +        第一个同学第三课成绩
         * scores[0][0]                 scores[0][1]                scores[0][2]
         * 总结:
         * 可以看出 求每个人的总成绩时,学生是暂时不变的,每科成绩都是变化的。所以学生应该在外层循环,而科目应该在内层循环。
         */
        int[] perSum = new int[scores.length];//定义数组perSum,用于存储每个学生的总成绩。
        double[] perAvg = new double[scores.length];//定义数组perAvg,用于存储每个学生平均值。
        int[] perMax = new int[scores.length];//定义数组perMax,用于存储每个学生的三科中最大的成绩。
        int[] perMin = new int[scores.length];//定义数组perMin,用于存储每个学生的三科中最小的成绩。
        for(int i=0;i<scores.length;i++) {
            int sum = 0;//内层循环每遍历结束一个学生 sum要归零
            int max = scores[i][0];//假设一个最大值为scores[i][0],第i个同学的第一科成绩,与第i个同学的第二科成绩比较.....同学是暂时不变的,因为是同一个人的三科成绩作比较。
            int min = scores[i][0];
            for(int j=0;j<scores[i].length;j++) {
                sum+=scores[i][j];
                if(max<scores[i][j]) {
                    max = scores[i][j];
                }
                if(min>scores[i][j]) {
                    min = scores[i][j];
                }
            }
            perMax[i] = max;//内层循环结束后,比较出最大值存入perMax中。
            perMin[i] = min;//外层循环结束后,比较出最小值存入perMin中。
            perSum[i] = sum;//内层for循环结束,每个学生的总成绩才加好,所以在内层循环结束之后,将sum存入到数组perSum中。
            perAvg[i] = sum/scores.length;//计算每个学生的平均值,将值存入数组perAvg中
        }
        System.out.println("--------------------------学生成绩状况-------------------------");
        System.out.println("学生序号"+"\t语文成绩"+"\t数学成绩"+"\t英语成绩"+"\tperSum"+"\tperAvg"+"\tMax"+"\tMin");
        for(int i=0;i<scores.length;i++) {
            System.out.print((i+1)+"\t");
            for(int j=0;j<scores[i].length;j++) {
                System.out.print(scores[i][j]+"\t");
            }
            System.out.print(perSum[i]+"\t");
            System.out.print(perAvg[i]+"\t");
            System.out.print(perMax[i]+"\t");
            System.out.print(perMin[i]+"\t");
            System.out.println();
        }
        System.out.println("\n-----------------------------------------------------------");
        
    }
}
 

猜你喜欢

转载自blog.csdn.net/Betty_betty_betty/article/details/81254929