package?try_catch;
import?java.util.InputMismatchException;
import?java.util.Scanner;
public?class?TryCatchPractice2?{
????//在類開始聲明,則其他方法都能調(diào)用
????Scanner?in=new?Scanner(System.in);
????NoBookException?NoB=new?NoBookException();
????String[]?books={"語文","數(shù)學(xué)","英語"};
????static?TryCatchPractice2?trycat=new?TryCatchPractice2();
????
????//主函數(shù)
????public?static?void?main(String[]args)?throws?NoBookException{
????????trycat.InputClassException();
????}
????//命令錯(cuò)誤
????public?void?InputClassException()throws?NoBookException{
????????try{
????????System.out.println("歡迎光臨本圖書管理系統(tǒng)");
??????? System.out.println("1.書名查詢。2.序號(hào)查詢");
??????? int?a=in.nextInt();
??????? switch(a){
??????? ????case?1: //查找圖書
??????? ?? trycat.findBooks();
??????? ????break;
??????? ????case?2://查找序號(hào)
??????? ???? trycat.findBooksNum();
??????? ????break;
??????? ????default:
??????? ???? throw?new?NoBookException("錯(cuò)誤命令,請(qǐng)輸入整數(shù)1或2");//如果輸入數(shù)字非1,2則拋出
??????? ????break;
?????????}catch(NoBookException?e){
?// InputMismatchException?InE=new?InputMismatchException();
?// InE.initCause(e);
?// System.out.println("錯(cuò)誤命令,請(qǐng)輸入整數(shù)1或2");
?// 求教如何在掃描儀我輸入非int型時(shí)會(huì)提示錯(cuò)誤命令,例如a
? e.printStackTrace();
? System.out.println("請(qǐng)重新輸入:");
? InputClassException();
? }
?}
?//查找圖書
?public?void?findBooks()throws?NoBookException{
?????System.out.println("請(qǐng)輸入您要查詢的圖書:");
?????String?b=in.next();
?????try{
?????????for(int?i=0;i<books.length;i++){
?????????????if(books[i].equals(b)){//如果查詢的書名不為空,輸出書本信息
????????????? System.out.println("查詢成功");
?????????????}else{//如果查詢?yōu)榭?,拋出異?
????????????? throw?new?NoBookException("圖書不存在");
??????????? ?}
?????????}
?????}catch(NoBookException?e){
????? e.printStackTrace();//捕捉到異常后輸出異常位置
????? NoB.initCause(e);
????? System.out.println("請(qǐng)重新輸入:");
????? InputClassException();//重新進(jìn)入系統(tǒng)
?????}
?}
?//查找序號(hào)
?public?void?findBooksNum()throws?NoBookException{
? System.out.println("請(qǐng)輸入您要借閱的圖書序號(hào):");
? int?i=in.nextInt();
? try{
? ????if(i<books.length&&i>=0){//如果查詢的序號(hào)不越界,輸出書本信息
? ??? System.out.println("查詢成功");
? ??? System.out.println("您查詢的是"+books[i]);
? ????}else{//越界則拋出數(shù)組越界異常
? ???? throw?new?NoBookException("序號(hào)錯(cuò)誤");
? ????}
? }catch(NoBookException?e){
? e.printStackTrace();//捕捉到異常后輸出異常位置
? NoB.initCause(e);
? System.out.println("請(qǐng)重新輸入:");
? InputClassException();//重新進(jìn)入系統(tǒng)
? }
?}
?//in.close();//為什么這里打in.close.關(guān)閉掃描儀會(huì)報(bào)錯(cuò)
}
2019-06-04
InputClassException()方法少了個(gè)結(jié)束的括號(hào)