JavaC编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。 输入格式: 从键盘中输入学生人数n 从键盘中输入第1个学生的成绩 从键盘中输入第2个学生的成绩 ... 从键盘中输入第n个学生的成绩 (注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
时间: 2024-01-24 08:17:34 浏览: 76
用java语言编写统计学生成绩的程序
5星 · 资源好评率100%
以下是Java代码实现:
```java
import java.util.Scanner;
class ScoreException extends Exception {
private int invalidScore;
public ScoreException(int score) {
invalidScore = score;
}
public String toString() {
return "Invalid score: " + invalidScore;
}
}
public class ScoreInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
while (n <= 0) {
System.out.print("Enter the number of students: ");
n = scanner.nextInt();
}
int passCount = 0;
int failCount = 0;
for (int i = 1; i <= n; i++) {
boolean validScore = false;
int score = 0;
while (!validScore) {
try {
System.out.print("Enter the score for student " + i + ": ");
score = scanner.nextInt();
if (score < 0 || score > 100) {
throw new ScoreException(score);
}
validScore = true;
} catch (ScoreException e) {
System.out.println(e);
} catch (Exception e) {
System.out.println("Invalid input, please try again.");
scanner.nextLine();
}
}
if (score >= 60) {
passCount++;
} else {
failCount++;
}
}
System.out.println("Pass count: " + passCount);
System.out.println("Fail count: " + failCount);
}
}
```
程序先从键盘中读入学生人数n,然后循环读入每个学生的成绩。对于每个学生的成绩,如果输入不是整数,或者成绩小于0或大于100,程序会抛出一个自定义的ScoreException异常,并输出该异常的toString()方法返回的信息。如果输入的成绩是有效的,则统计及格人数和不及格人数。最后输出及格人数和不及格人数。
注意,因为Scanner类的nextInt()方法只能读入一个整数,如果输入的不是整数,程序会抛出InputMismatchException异常。这里我们使用了catch(Exception e)语句来捕捉这个异常,并提示用户重新输入。如果不使用这个语句,程序会一直卡在这个地方,无法继续执行。
阅读全文