用java设计一个统计多个班级平均成绩的程序。该程序要求如下: 2)用一个不规则的二维数组保存各个班级输入的成绩,每个成绩用double表示。 3)实现一个可抛出的自定义异常,它显示输入的成绩非法(成绩合法值在0到100间) 4)一个函数用于读取一个班级的成绩,每输入一项成绩就检查成绩是否合法,不合法抛出自定义异常。 5)让用户依次输入每个班级的成绩,输入完一个班级后即计算并打印该班级的平均成绩。这里需要捕获自定义的成绩不合法异常,且要求计算和打印在finally中完成。 6)最后计算所有班级一起的平均成绩,并打印出来
时间: 2023-03-24 10:03:23 浏览: 83
班级布置学习C#课程的第一天
以下是用 Java 设计一个统计多个班级平均成绩的程序:
```java
import java.util.Scanner;
class InvalidScoreException extends Exception {
public InvalidScoreException(String message) {
super(message);
}
}
class ClassScore {
private double[][] scores;
public ClassScore(int numClasses, int numStudents) {
scores = new double[numClasses][];
for (int i = ; i < numClasses; i++) {
scores[i] = new double[numStudents];
}
}
public void readScores(int classIndex) throws InvalidScoreException {
Scanner scanner = new Scanner(System.in);
for (int i = ; i < scores[classIndex].length; i++) {
System.out.printf("Enter score for student %d: ", i + 1);
double score = scanner.nextDouble();
if (score < || score > 100) {
throw new InvalidScoreException("Invalid score: " + score);
}
scores[classIndex][i] = score;
}
}
public double getAverage(int classIndex) {
double sum = ;
for (double score : scores[classIndex]) {
sum += score;
}
return sum / scores[classIndex].length;
}
public double getTotalAverage() {
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 number of classes: ");
int numClasses = scanner.nextInt();
System.out.print("Enter number of students per class: ");
int numStudents = scanner.nextInt();
ClassScore classScore = new ClassScore(numClasses, numStudents);
for (int i = ; i < numClasses; i++) {
boolean validInput = false;
while (!validInput) {
try {
classScore.readScores(i);
validInput = true;
} catch (InvalidScoreException e) {
System.out.println(e.getMessage());
} finally {
double average = classScore.getAverage(i);
System.out.printf("Average score for class %d: %.2f\n", i + 1, average);
}
}
}
double totalAverage = classScore.getTotalAverage();
System.out.printf("Total average score: %.2f\n", totalAverage);
}
}
```
在这个程序中,我们定义了一个 `ClassScore` 类来保存各个班级的成绩,并提供了读取成绩和计算平均成绩的方法。我们还定义了一个 `InvalidScoreException` 类来表示输入的成绩非法的异常。
在 `main` 方法中,我们首先读取用户输入的班级数和每个班级的学生数,并创建一个 `ClassScore` 对象。然后,我们依次读取每个班级的成绩,如果输入的成绩非法,就抛出自定义的异常,并在 `finally` 块中计算并打印该班级的平均成绩。最后,我们计算所有班级一起的平均成绩,并打印出来。
阅读全文