解题思路:先用数组获取输入的分数,再判断这些分数放在对应等级的二维数组中,打印等级的各数组长度,判断出等级人数最多的数组,打印该数组
注意事项:注意最后的降序排列
参考代码:
import java.util.Arrays; import java.util.Scanner; public class Main{ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub /* * 给定一个百分制成绩T,将其划分为如下五个等级之一: 90~100为A,80~89为B,70~79为C,60~69为D,0~59为E * 现有若干百分制成绩 * (成绩个数不超过1000个),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩 * (保证人数最多的等级只有一个)。 输入 第一行是成绩的个数 n 第二行是学生的成绩,若干0~100的正整数,用空格隔开 * * 输出 第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数 第二行一个正整数,表示人数最多的等级段中人数 * 接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出 */ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); } int [][] a = new int [5][]; int a1 = 0, b = 0, c = 0, d = 0, e = 0; for (int i : arr) { if (i >= 90 && i <= 100) { a1++; } if (i >= 80 && i <= 89) { b++; } if (i >= 70 && i <= 79) { c++; } if (i >= 60 && i <= 69) { d++; } if (i >= 0 && i <= 59) { e++; } } a[0]=new int[a1]; a[1]=new int[b]; a[2]=new int[c]; a[3]=new int[d]; a[4]=new int[e]; a1 = 0; b = 0; c = 0; d = 0; e = 0; for (int is : arr) { if (is >= 90 && is <= 100) { a[0][a1] = is; a1++; } if (is >= 80 && is <= 89) { a[1][b] = is; b++; } if (is >= 70 && is <= 79) { a[2][c] =is; c++; } if (is >= 60 && is <= 69) { a[3][d] = is; d++; } if (is>= 0 && is <= 59) { a[4][e] = is; e++; } } int[] count = { a1, b, c, d, e }; Arrays.sort(count); for (int i = 0; i < 5; i++) { System.out.print(a[i].length + " "); if (i==4) { System.out.print("\n"); } } for (int j = 0; j < 5; j++) { if (a[j].length == count[count.length - 1]) { System.out.println(count[count.length-1]); Arrays.sort(a[j]); for (int jk = a[j].length-1; jk >=0 ; jk--) { System.out.print(a[j][jk] + " "); } } } } }
0.0分
2 人评分