用java设计一个统计多个班级平均成绩的程序。该程序要求如下: 2)用一个不规则的二维数组保存各个班级输入的成绩,每个成绩用double表示。 3)实现一个可抛出的自定义异常,它显示输入的成绩非法(成绩合法值在0到100间) 4)一个函数用于读取一个班级的成绩,每输入一项成绩就检查成绩是否合法,不合法抛出自定义异常。 5)让用户依次输入每个班级的成绩,输入完一个班级后即计算并打印该班级的平均成绩。这里需要捕获自定义的成绩不合法异常,且要求计算和打印在finally中完成。 6)最后计算所有班级一起的平均成绩,并打印出来
时间: 2023-03-24 15:03:37 浏览: 68
用java语言编写统计学生成绩的程序
5星 · 资源好评率100%
以下是用 Java 设计一个统计多个班级平均成绩的程序:
```
import java.util.Scanner;
class InvalidScoreException extends Exception {
public InvalidScoreException(String message) {
super(message);
}
}
class ClassScore {
private double[][] scores;
private int numClasses;
public ClassScore(int numClasses) {
this.numClasses = numClasses;
this.scores = new double[numClasses][];
}
public void readScores() {
Scanner scanner = new Scanner(System.in);
for (int i = ; i < numClasses; i++) {
System.out.printf("Enter scores for class %d:\n", i + 1);
double[] classScores = new double[];
while (true) {
try {
double score = scanner.nextDouble();
if (score < || score > 100) {
throw new InvalidScoreException("Invalid score: " + score);
}
double[] newScores = new double[classScores.length + 1];
System.arraycopy(classScores, , newScores, , classScores.length);
newScores[classScores.length] = score;
classScores = newScores;
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if (classScores.length > ) {
double sum = ;
for (double score : classScores) {
sum += score;
}
double avg = sum / classScores.length;
System.out.printf("Class %d average score: %.2f\n", i + 1, avg);
}
}
if (classScores.length == ) {
System.out.println("Please enter at least one valid score.");
} else {
break;
}
}
scores[i] = classScores;
}
}
public double getAverageScore() {
double sum = ;
int count = ;
for (double[] classScores : scores) {
for (double score : classScores) {
sum += score;
count++;
}
}
return sum / count;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of classes: ");
int numClasses = scanner.nextInt();
ClassScore classScore = new ClassScore(numClasses);
classScore.readScores();
double avg = classScore.getAverageScore();
System.out.printf("Overall average score: %.2f\n", avg);
}
}
```
该程序实现了以下要求:
1. 用一个不规则的二维数组保存各个班级输入的成绩,每个成绩用 double 表示。
2. 实现一个可抛出的自定义异常,它显示输入的成绩非法(成绩合法值在 到 100 间)。
3. 一个函数用于读取一个班级的成绩,每输入一项成绩就检查成绩是否合法,不合法抛出自定义异常。
4. 让用户依次输入每个班级的成绩,输入完一个班级后即计算并打印该班级的平均成绩。这里需要捕获自定义的成绩不合法异常,且要求计算和打印在 finally 中完成。
5. 最后计算所有班级一起的平均成绩,并打印出来。
阅读全文