BUPT JAVA: 学生类(异常)

学生类(异常)

题目描述:

在上次作业的学生类 (1047 学生类) 基础上:
定义一个异常类 ScoreException, 当输入的学生成绩不在 $ [0, 100] $区间时, 抛出该异常.
定义一个异常类 StudentNumberException, 当输入的学号不满足下述条件, 则抛出该异常. 条件为:
学号为 10 位, 第 1 位为 2, 第2位为0, 其余位为数字 0~9.
StudentStudentTest 类进行必要修改, 提升程序的健壮性.

输入:

只有一行, 先是2个字符串, 依次代表 number, name, 然后是三个整数, 依次代表 maths, english, science 的成绩.

输出:

如果成绩非法, 则输出 Illegal score format: 如果学号非法则输出 Illegal number format.
如果正常, 则打印学生信息, 平均分保留一位小数. 具体格式见输出样例.

输入样例:

1
2011211301 Tom 88 79 90

输出样例:

1
2
3
4
5
6
Student ID:2011211301
Name:Tom
Math:88
English:79
Science:90
Average Score:85.7

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// 2023/04/10
// 学生类(异常)

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
var input = new Scanner(System.in);
String number = input.next(),
name = input.next();
int[] grades = new int[3];

for (int i = 0; i < 3; i++)
grades[i] = input.nextInt();

try {
if (!number.matches("20\\d{8}"))
throw new StudentNumberException();

for (int i = 0; i < 3; i++)
if (grades[i] < 0 || grades[i] > 100)
throw new ScoreException();
} catch (ScoreException | StudentNumberException ignored) {
return;
}

System.out.println("Student ID:" + number);
System.out.println("Name:" + name);
System.out.printf("Math:%d\nEnglish:%d\nScience:%d\nAverage Score:%.1f", grades[0], grades[1], grades[2], (grades[0] + grades[1] + grades[2]) * 1.0 / 3);
}
}

class ScoreException extends Exception {
public ScoreException() {
System.out.println("Illegal score format");
}
}

class StudentNumberException extends Exception {
public StudentNumberException() {
System.out.println("Illegal number format");
}
}
2023-04-10 
IP属地: 北京

BUPT JAVA: 学生类(异常)
https://dengwuli.github.io/2023/04/10/BUPT_JAVA/学生类(异常)/
作者
DengWuLi
发布于
2023年4月10日
更新于
2023年7月14日
许可协议