学生类(异常)
题目描述:
在上次作业的学生类 (1047 学生类) 基础上:
定义一个异常类 ScoreException
, 当输入的学生成绩不在 $ [0, 100] $区间时, 抛出该异常.
定义一个异常类 StudentNumberException
, 当输入的学号不满足下述条件, 则抛出该异常. 条件为:
学号为 10 位, 第 1 位为 2
, 第2位为0
, 其余位为数字 0~9
.
对 Student
和 StudentTest
类进行必要修改, 提升程序的健壮性.
输入:
只有一行, 先是2个字符串, 依次代表 number
, name
, 然后是三个整数, 依次代表 maths
, english
, science
的成绩.
输出:
如果成绩非法, 则输出 Illegal score format
: 如果学号非法则输出 Illegal number format
.
如果正常, 则打印学生信息, 平均分保留一位小数. 具体格式见输出样例.
输入样例:
输出样例:
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
|
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属地: 北京