大孩子
2021-10-22 12:34
采纳率: 100%
浏览 50

写了一个Java练习题已知每个学生这次成绩(0~100)范围内的整数 * 1.求平均、最高和最低成绩 * 2.统计考试成绩的分布率最后判读成绩分布规律 变量设置较多 有没有什么办法优化

写了一个Java练习题
已知每个学生这次成绩(0~100)范围内的整数
* 1.求平均、最高和最低成绩
* 2.统计考试成绩的分布率
最后判读成绩分布规律 变量设置较多 有没有什么办法优化

import java.util.Scanner;

public class Studentgrade_out {

    /**
     * 需求:
     *     已知每个学生这次成绩(0~100)范围内的整数
     *      1.求平均、最高和最低成绩
     *      2.统计考试成绩的分布率
     */

     class studentgrade_in{       //学生成绩内部类
        int[] grede;
        public void grade(int number){      //接收成绩方法
            grede=new int[number];          //定义数组 给定长度
            Scanner scanner = new Scanner(System.in);//键盘输入成绩
            System.out.println("请输入"+number+"位学生成绩(百分制):");
            for (int i = 0; i <number; i++) {
                grede[i]=scanner.nextInt();     //给数组赋值
            }
//            for (int i = 0; i < grede.length; i++) {
//                System.out.println(grede[i]);
//            }
        }
        public void judge(int number){  //判读数据的最大和最小数
            /**
             * 冒泡排序 比较相邻数据元素大小 把数组从大到小排序
             */
            for (int i = 0; i < grede.length; i++) {
                for (int j = 0; j < grede.length-1-i; j++) {
                    if (grede[j]>grede[j+1]) {
                        /**
                         * 引用中间变量 交换前后数据 将较大后移
                         */
                        int temp =grede[j];
                        grede[j]=grede[j+1];
                        grede[j+1]=temp;
                    }
                }
            }
            //此时数组顺序从小到大排序,第一个数据是最小值,最后一个数据是最大值
            System.out.println("最小值是:"+grede[0]);
            System.out.println("最大值是:"+grede[grede.length-1]);
        }
        public  void sum(int number) {  //平均成绩
            int sum=0;          //number个数据相加总和
            for (int i = 0; i < number; i++) {
                sum+=grede[i];
            }
            //成绩总和/人数 平均成绩
            System.out.println("这次测试平均成绩是:"+sum/number);
        }
        public void stage(int number){      //统计考试成绩分布规律
            int l=0,j=0,k=0,g=0,f=0,d=0,q=0;    //定义变量记录每个分数段的人数

            for (int i = 0; i < number; i++) {  //遍历数组
                int a=grede[i];         //接收数组元素进行判断
                if (a < 60) {
                    l++;
                }else if (a>=60) {
                    d++;
                }
                if (a >=60&&a<70 ) {
                    k++;
                }else if (a >=70&&a<80) {
                    g++;
                }else if(a>=80&&a<90){
                    f++;
                }else if (a>=90&&a<=100){
                    q++;
                }
            }
            System.out.println("不及格人数有"+l+"个");
            System.out.println("及格人数有"+d+"个");
            System.out.println("60-70的人数有"+k+"个");
            System.out.println("70-80的人数有"+g+"个");
            System.out.println("80-90的人数有"+f+"个");
            System.out.println("90-100的人数有"+q+"个");
        }
    }

    /*
    外部类方法
    */
    public void get(int number){      //实例化内部类调用方法(内部类非静态;main方法不能直接调用)
         studentgrade_in si = new studentgrade_in();
        si.grade(number);
        si.judge(number);
        si.sum(number);
        si.stage(number);
     }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请问有少位学生成绩输入:");
        int number = scanner.nextInt();
        /**
         * main()  只能调用静态方法
         *
         * 也可以将 get 方法写成静态方法
         */
        Studentgrade_out so = new Studentgrade_out();   //实例化外部类
        so.get(number);     //调用get();方法
    }
}

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新