7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)
定義IllegalScoreException異常類,代表分數相加后超出合理范圍的異常。該異常是checked exception,即希望該異常一定要被捕獲處理。
定義IllegalNameException異常類,代表名字設置不合理的異常。該異常是unchecked exception
定義Student類。
屬性:
private String name;
private int score;
方法:
toString //自動生成
setter/getter //自動生成
改造setName //如果姓名首字母為數字則拋出IllegalNameException
public int addScore(int score) //如果加分后分數<0 或>100,則拋出IllegalScoreException,加分不成功。
###main方法:
輸入new則新建學生對象。然后輸入一行學生數據,格式為姓名 年齡,接著調用setName,addScore。否則跳出循環。
setName不成功則拋出異常,并打印異常信息,然后繼續下一行的處理。
addScore不成功則拋出異常,并打印異常信息,然后繼續下一行的處理。如果2、3都成功,則打印學生信息(toString)
如果在解析學生數據行的時候發生其他異常,則打印異常信息,然后繼續下一行的處理。
Scanner也是一種資源,希望程序中不管有沒有拋出異常,都要關閉。關閉后,使用System.out.println(“scanner closed”)打印關閉信息
注意:使用System.out.println(e);打印異常信息,e為所產生的異常。
輸入樣例:
new zhang 10 new wang 101 new wang30 new 3a 100 new wang 50 other輸出樣例:
Student [name=zhang, score=10] IllegalScoreException: score out of range, score=101 java.util.NoSuchElementException IllegalNameException: the first char of name must not be digit, name=3a Student [name=wang, score=50] scanner closed import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s;while (true){s= sc.nextLine();if (s.equals("new")){Student stu=new Student();String s1=sc.nextLine();String[] ss=s1.split(" ");try {stu.setName(ss[0]);}catch (Exception e){continue;}try{stu.addScore(Integer.parseInt(ss[1]));}catch (Exception e){stu.flag=false;System.out.println("java.util.NoSuchElementException");}if (stu.flag) System.out.println(stu);}else if (s.equals("other")){break;}}sc.close();System.out.println("scanner closed");} }class IllegalScoreException extends RuntimeException{public IllegalScoreException() {}public IllegalScoreException(String message) {super(message);}}class IllegalNameException extends RuntimeException{public IllegalNameException() {}public IllegalNameException(String message) {super(message);} }class Student{private String name;private int score;boolean flag=true;public String getName() {return name;}public void setName(String name) {if (name.charAt(0)>='0'&&name.charAt(0)<='9'){try{throw new IllegalNameException("the first char of name must not be digit, name=");}catch (IllegalNameException e){flag=false;System.out.println(e+name);}}else {this.name = name;}}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student [" +"name=" + name +", score=" + score +']';}public int addScore(int score){this.score=this.score+score;if (this.score>100||this.score<0){try{throw new IllegalScoreException("score out of range, score=");}catch (IllegalScoreException e){flag=false;System.out.println(e.toString()+score);}}return this.score;} }總結
以上是生活随笔為你收集整理的7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 圣保罗楼怎么样?圣保罗地板的四大优势
- 下一篇: 天姬变怎么删除角色 《天姬变》游戏内删除