java - 如何让它显示一个级别的人数,而不是显示每个级别的成绩?
问题描述
所以在我的程序中,我希望它显示每个级别的学生人数(例如,如果两个成绩低于 50,“R 级人数:2”。我遇到的问题是它显示的成绩是每个级别(例如“级别 1 的数字:55”。)而不是说明该级别中有多少个等级。
import java.util.*;
import java.text.*;
import java.math.*;
public class Marks {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
DecimalFormat format = new DecimalFormat(".0");
format.setRoundingMode(RoundingMode.HALF_UP);
// Teachers can choose how many grades they want to enter
System.out.print("How many student grades would you like to enter:");
int x = in.nextInt();
int [] grades = new int[x];
System.out.print("Enter student marks:\n");
for (int i = 0; i < x; i++) {
grades[i] = in.nextInt();
}
bubbleSort(grades);
System.out.println("Sorted grades: "+Arrays.toString(grades));
classAverage(grades);
System.out.println("Class average: "+format.format(classAverage(grades))+"%");
classMax(grades);
System.out.println("Maximum mark: "+classMax(grades)+"%");
classMin(grades);
System.out.println("Minimum mark: "+classMin(grades)+"%");
// To get the grade range.
int range = classMax(grades) - classMin(grades);
System.out.println("Range of marks: "+range+"%");
classLevel(grades);
} // Method for finding the class average
private static double classAverage(int [] grades) {
int sum = 0;
for (int g : grades) sum +=g;
double average = ((double)sum) / grades.length;
return (average);
} // Method for finding the highest grade
private static int classMax(int [] grades) {
int max = Arrays.stream(grades).max().getAsInt();
return max;
} // Method for finding the lowest grade
private static int classMin(int [] grades) {
int min = Arrays.stream(grades).min().getAsInt();
return min;
} // Method for arranging the grades into levels
private static void classLevel(int [] grades) {
for(int i : grades) {
if(i < 50) {
System.out.println("Number at Level R: "+i);
} else if((i >= 50)&&(i < 60)) {
System.out.println("Number at Level 1: "+i);
} else if((i >= 60)&&(i <70)) {
System.out.println("Number at Level 2: "+i);
} else if((i >= 70)&&(i<80)) {
System.out.println("Number at Level 3: "+i);
} else {
System.out.println("Number at Level 4: "+i);
}
}
}
// Method for sorting the grades
private static void bubbleSort(int[] n) {
boolean flag;
do {
flag = false;
for (int i = 0; i < n.length - 1; i++) {
if (n[i] > n[i + 1]) {
int temp = n[i];
n[i] = n[i + 1];
n[i + 1] = temp;
flag = true;
}
}
} while (flag);
}
}
解决方案
只需使用一个变量来计算每个范围内的数量。然后在最后打印。
private static void classLevel(int [] grades) {
int levelR = 0;
int level1 = 0;
int level2 = 0;
int level3 = 0;
int level4 = 0;
for(int i : grades) {
if(i < 50) {
levelR++;
} else if((i >= 50)&&(i < 60)) {
level1++;
} else if((i >= 60)&&(i <70)) {
level2++;
} else if((i >= 70)&&(i<80)) {
level3++;
} else {
level4++;
}
System.out.println("Number at Level R: "+ levelR);
System.out.println("Number at Level 1: "+ level1);
System.out.println("Number at level 2: "+ level2);
System.out.println("Number at level 3: "+ level3);
System.out.println("Number at Level 4: "+ level4);
}
}
推荐阅读
- python - 根据 Python 中的查找值替换所有文件中的列名
- decompiling - 任何人都可以识别此代码片段的编程语言吗?
- r - 使用前 50 行计算 R 中的运行平均值
- android-studio - 设置为不将 gmail 发送到特定的 gmail
- amazon-web-services - HashiCorp Vault 创建用户以登录 AWS 管理控制台
- javascript - 从 API 中提取数据
- java - Spring-Boot WebFlux getFormData fails to parse real x-www-form-urlencoded data?
- node.js - 使用 socks5 时的 Request-Promise 库错误:- RequestError:错误:getaddrinfo ENOTFOUND
- c++ - C2011 'class' 类型重新定义
- events - wxpython 4.01 / Python 3.7 中事件函数的值