package?com.imooc;
import?java.util.InputMismatchException;
import?java.util.Scanner;
public?class?Test?{public?static?void?main(String[]?args)?throws?BookException?{
????//定義一個Book類數組用來存儲書籍,擬定義四本書
????Book[]?book?=?{new?Book("論語",1),new?Book("高數",2),new?Book("語文",3),new?Book("法語",4)};
????//提前定義一個用戶選擇的選項方式,默認為0
????int?chose?=?0;
????//定義書名,后期存儲書名,默認為空
????String?bookName?=?null;
????//定義書序號。后期存儲書序號
????int?bookNum;
????//提前定義一個輸入流
????Scanner?sc?=?null;
????//定義是否有用戶想要的書,默認false
????boolean?ifHaveBook?=?false;
????//體錢定義一本書Book,用于存儲用戶選擇的書
????Book?needBook?=?null;
????//當用戶輸入有誤時,彈出提示并重新開始輸入選擇書籍
????while(chose?!=1&&chose!=2){
????????System.out.println("輸入書名請按1,輸入序號請按2");
????????try?{
????????//得到用戶輸入的值,并存在體錢準備的chose參數中
????????sc?=?new?Scanner(System.in);
????????chose?=?sc.nextInt();
????????//判斷用戶選擇的找書方式,如果輸入的數字不是1或者2,拋出自建錯誤類ErrorNumException
????????if(chose?!=1&&chose?!=2){
????????????throw?new?ErrorNumException();
????????}
????????//如果用戶選擇的是1,輸入名稱來找書
??????????if(chose==1){
??????????????System.out.println("請輸入你想要的的書籍名稱");
??????????????//得到用戶的輸入值,并賦值給提前準備的bookName中
??????????????sc?=?new?Scanner(System.in);
??????????????bookName?=?sc.nextLine();
??????????????//遍歷書的數組,判斷是否有用戶輸入的書名的書
??????????????for(Book?k:book){
??????????????//如果找到對應書名的書,將ifHaveBooK賦值為true,代表有書,找到的書存在needBook中
??????????????????if(k.getName().equals(bookName)){
??????????????????ifHaveBook?=?true;
??????????????????needBook?=?k;
??????????????????}
??????????????}
???????//根據ifHaveBook的結果判斷是否找到書,找到則輸出找到的書的信息,沒有則拋出自定義異常NoBookNameException
??????????????if(ifHaveBook){
????????????????System.out.println("找到您要的書籍:"+needBook.getName());
??????????????}else{
??????????????//chose清零是為了如果沒有找到書,讓循環繼續運行,重新開始找書
????????????????chose?=?0;
????????????????throw?new?NoBookNameException();
??????????????}
????????????//如果用戶選擇的是2,輸入序號來找書
??????????}else{
??????????????System.out.println("請輸入你想要的的書籍序號");
??????????????//得到用戶輸入的序號并存入bookNum中
??????????????sc?=?new?Scanner(System.in);
??????????????bookNum?=?sc.nextInt();
??????????????//遍歷書數組,判斷是否有用戶輸入的書序號的書
??????????????for(Book?k:book){
??????????????//如果找到對應書名的書,將ifHaveBooK賦值為true,代表有書,找到的書存在needBook中
????????????????if(k.getNum()==bookNum){
????????????????????ifHaveBook?=?true;
????????????????????needBook?=?k;
????????????????}
??????????????}
???????//根據ifHaveBook的結果判斷是否找到書,找到則輸出找到的書的信息,沒有則拋出自定義異常NoBookNumException
????????????????if(ifHaveBook){
????????????????????System.out.println("找到您要的書籍:"+needBook.getName());
????????????????}else{
????????????????//chose清零是為了如果沒有找到書,讓循環繼續運行,重新開始找書
????????????????????chose?=?0;
????????????????????throw?new?NoBookNumException();
????????????????}
??????????}
????????}?catch?(InputMismatchException?e)?{
????????????System.out.println("請按照提示輸入合法數字");
????????}?catch?(ErrorNumException?e)?{
????????????System.out.println("輸入錯誤,請輸入1或者2");
????????}?catch?(NoBookNameException?e)?{
????????????????System.out.println("根據您輸入的書名,未找到相應的書籍");
????????}?catch?(NoBookNumException?e)?{
????????????????System.out.println("根據您輸入的序號,未找到相應的書籍");
????????}
?????}
??}
}
2019-10-29
?瑪尼瑪尼
2019-12-26