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

1.获取成绩(键盘输入) 数组接收

2.数组排序 确定最大值和最小值

3.获取数组数据求平均值 

4.统计成绩分布

5.问题  判断成绩分部变量较多 求解决

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();方法
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值