题目:
在新冠肺炎疫情防控常态化形势下,核酸检测为疫情应对与处置发挥了重要的技术支撑作用,人们外出前经常需要先进行核酸检测。现为检测机构设计一个处理被检人员信息的管理系统,请定义一个类存储被检人员信息,要求:
(1)分别定义身份证号非法异常类、年龄非法异常类和新冠肺炎病毒阳性异常类;
(2)需要保存的隐私信息有身份证号、姓名、年龄、检测结果;
(3)定义构造方法初始化对象属性;
(4)提供属性访问方法;其中身份证号属性值的设置方法定义时,如果身份证号的前17位出现非数字,应抛出身份证号非法异常;其中年龄属性值的设置方法定义时,如果年龄不在1~150范围内,应抛出年龄非法异常;
(5)定义一个诊断方法,用于输出每个人的信息。当某人的检测结果为“阳性”时,应抛出新冠肺炎病毒阳性异常,并输出“隔离治疗”;
(6)分别用下列数据测试被检人员信息类,合理处理可能出现的异常,并输出“新冠肺炎检测管理信息系统V1.0”:
53010219200508011Z 张三 18 阴性
1X0701199310302288 李四 60 阴性
520302198912097945 王五 151 阴性
42092219731015461X 赵六 20 阳性
注:如果认为有必要,可以增加其他的成员方法或构造方法来辅助完成任务。何时触发异常、如何处理异常可自行决定。
下面展示一些 内联代码片
。
思路,自定义定义三个异常类
1.ageException extends Exception
2.idException extends Exception
3.resException extends Exception
测试类书写,三个异常类可定义在测试类内部
下面是实验代码 供参考
有误之处,欢迎大佬评论或私信指正
1.ageException extends Exception
public class ageException extends Exception{
public ageException(String s) {
super(s);
}
public ageException() {
super();
}
}
2.idException extends Exception
public class idException extends Exception{
public idException(String s) {
super(s);
}
public idException() {
super();
}
}
3.resException extends Exception
public class resException extends Exception{
public resException(String s) {
super(s);
}
public resException() {
super();
}
}
//身份证号异常方法
public void id(String s) throws idException {
for(int i=0;i<17;i++){
char c = s.charAt(i);
if(!jud(c)){
throw new idException("id非法异常");
}
}
}
public boolean jud(char c){
char arr[] = {'0','1','2','3','4','5','6','7','8','9'};
for (int i = 0; i < arr.length; i++) {
if(c==arr[i])return true;
}
return false;
}
//年龄异常方法
public void age(int n) throws ageException{
if(n<1||n>150){
throw new ageException("年龄非法异常");
}
}
//定义诊断方法
public void res(String result) throws resException{
String s = "阳性";
if(result.equals(s)){
throw new resException("隔离治疗");
}
}
测试类:
public class Main {
private String id;
private String name;
private int age;
private String result;
//static int num=0;
//身份证号异常方法
public void id(String s) throws idException {
for(int i=0;i<17;i++){
char c = s.charAt(i);
if(!jud(c)){
throw new idException("id非法异常");
}
}
}
public boolean jud(char c){
char arr[] = {'0','1','2','3','4','5','6','7','8','9'};
for (int i = 0; i < arr.length; i++) {
if(c==arr[i])return true;
}
return false;
}
//年龄异常方法
public void age(int n) throws ageException{
if(n<1||n>150){
throw new ageException("年龄非法异常");
}
}
//定义诊断方法
public void res(String result) throws resException{
String s = "阳性";
if(result.equals(s)){
throw new resException("隔离治疗");
}
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public test2() {
}
public test2(String id, String name, int age, String result) {
this.id = id;
this.name = name;
this.age = age;
this.result = result;
try{
id(id);
age(age);
res(result);
}catch (idException e){
e.printStackTrace();
}catch (ageException e){
e.printStackTrace();
}catch (resException e){
e.printStackTrace();
}
}
//53010219200508011Z 张三 18 阴性
//1X0701199310302288 李四 60 阴性
//520302198912097945 王五 151 阴性
//42092219731015461X 赵六 20 阳性
public static void main(String[] args) {
new test2("53010219200508011Z","张三",18,"阴性");
new test2("1X0701199310302288","李四",60,"阴性");
new test2("520302198912097945","王五",151,"阴性");
//new test2("42092219731015461X","赵六",20,"阳性");
System.out.println("--新冠肺炎检测管理信息系统V1.0");
}
}