已知某班10个学生的英语考试成绩为80、90、67、89、78、85、45、69、77、95分,统计优、良、中、差各分数段的人数和所占百分比。假设成绩90-100分为优,80-89分为良,60-79分为中,0-59分为差。用java语言写出来
时间: 2024-09-18 12:05:47 浏览: 61
为了统计这个班级学生英语成绩的优、良、中、差各分数段的人数及百分比,你可以使用Java的流(Stream) API来进行计算。首先,需要创建一个`ScoreCategory`类表示不同的成绩等级,然后遍历数组并计数每个等级的学生人数。以下是具体的Java代码示例:
```java
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
class ScoreCategory {
static final String EXCELLENT = "优";
static final String GOOD = "良";
static final String AVERAGE = "中";
static final String POOR = "差";
private int count;
private String category;
public ScoreCategory(String category) {
this.category = category;
}
public int getCount() {
return count;
}
public void incrementCount(int amount) {
count += amount;
}
@Override
public String toString() {
return category + ": " + count + "人 (" + (count * 100 / totalScores()) + "%)";
}
private double totalScores() {
// 假设totalScores()是预先存在的方法,用于获取总人数
return /* 班级总人数 */;
}
}
public class Main {
public static void main(String[] args) {
int[] scores = {80, 90, 67, 89, 78, 85, 45, 69, 77, 95};
Map<ScoreCategory, Integer> categoriesMap = new HashMap<>();
categoriesMap.put(new ScoreCategory(ScoreCategory.EXCELLENT), 0);
categoriesMap.put(new ScoreCategory(ScoreCategory.GOOD), 0);
categoriesMap.put(new ScoreCategory(ScoreCategory.AVERAGE), 0);
categoriesMap.put(new ScoreCategory(ScoreCategory.POOR), 0);
Arrays.stream(scores)
.forEach(score -> {
if (score >= 90) {
categoriesMap.get(ScoreCategory.EXCELLENT).incrementCount(1);
} else if (score >= 80) {
categoriesMap.get(ScoreCategory.GOOD).incrementCount(1);
} else if (score >= 60) {
categoriesMap.get(ScoreCategory.AVERAGE).incrementCount(1);
} else {
categoriesMap.get(ScoreCategory.POOR).incrementCount(1);
}
});
for (Map.Entry<ScoreCategory, Integer> entry : categoriesMap.entrySet()) {
System.out.println(entry.getKey().toString());
}
}
}
```
运行这段代码后,你会得到每个等级的人数以及相对应的百分比。
阅读全文