徐稳权


私信TA

用户名:18671468805

访问量:9551

签 名:

等  级
排  名 562
经  验 4201
参赛次数 0
文章发表 58
年  龄 0
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

解题思路:这个题目的话,看着是一个简单的题目,但是做到最后一步的人数最多的那个等级中所有人的分数,按从大到小的顺序输出。

其实这个题的先把用来装分数的数组倒叙,然后在把计算人数的也分到一个数组,在创建一个控制循环的开始变量的值,然后判断计算人数的数组等不等于最大人数的值,要是等于,就从num开始

          要是不等于,那就给num加上那些不等于最大人数的值,这样的话,就是num的值一直在变化,但是变来变去就是对应的索引值,因为索引值就是有多少人

参考代码:

import java.util.Arrays;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        //利用a来接收一个值,这个值用来控制数组和接收的多少个数据
        int a=scanner.nextInt();
        //定义一个数组,这个数组用来计数
        int []sz=new int[5];
        //这个数组用来接收那些输入的分数
        int []sz2=new int[a];
        //利用for来控制接收的值和计数
        for (int i = 0; i < a; i++) {
            //接收的值给sz2数组
            sz2[i]=scanner.nextInt();
            //计算90-100有多少个数
            if (sz2[i]>=90&&sz2[i]<=100) {
                sz[0]++;
            }
            //计算80-90有多少个数
            else if (sz2[i]>=80&&sz2[i]<=89) {
                sz[1]++;
            }
            //计算70-80有多少个数
            else if (sz2[i]>=70&&sz2[i]<=79) {
                sz[2]++;
            }
            //计算60-70有多少个数
            else if (sz2[i]>=60&&sz2[i]<=69) {
                sz[3]++;
            }
            //计算0-60有多少个数
            else if (sz2[i]>=0&&sz2[i]<=59) {
                sz[4]++;
            }
        }
        //利用Math函数的.max()方法,来求出最大值
        int max=Math.max(sz[4], Math.max(sz[3], Math.max(sz[2], (Math.max(sz[1], sz[0])))));
        //输出计数
        for (int i = 0; i < sz.length; i++) {
            System.out.print(sz[i]+" ");
        }
        //换行
        System.out.println();
        //输出计数最大值
        System.out.println(max);
        //给sz2排序
        Arrays.sort(sz2);
        //声明一个数组
        int xsz[]=new int[sz2.length];
        //给sz2做倒叙的处理,并赋值给xsz,并且下标【索引】是从0开始的
        for (int i = 0; i < sz2.length; i++) {
            xsz[i]=sz2[sz2.length-i-1];
        }
        //定义一个输出开始的下表【索引】
        int num=0;
        //输出最大计数的的值
        for (int i = 0; i < sz.length; i++) {
            //当sz[i]里的值等于最大计数
            if (max==sz[i]) {
                //就输出最大计数的值,因为这个for循环是从num开始的,所以当sz[i]里的值不等于最大计数就用num加上sz[i]的值,
                                                                           //要是等于的话,那就就是从num开始循环一直到num+sz[i]里的值结束
                                                                           //这样的话,就输出了最大计数的的所有值
                for (int j = num; j < num+sz[i]; j++) {
                    System.out.print(xsz[j]+" ");
                }
            }
            //当sz[i]里的值不等于最大计数
            else {
                //num就加上sz[i]里的值
                num+=sz[i];
            }
        }
    }
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区