作業(yè)提交,供大家參考
其中,需要另外創(chuàng)建一個(gè)NoBookException的類來繼承RuntimeException類。本程序參考過java菜鳥工程師的程序,加以個(gè)人修改,如對原代碼有興趣請自行移步。運(yùn)行過程中,遇到一個(gè)有趣的問題,就是程序在運(yùn)行的過程中,不能關(guān)閉scanner,即不能scanner.close(),除非在程序運(yùn)行結(jié)束,也就是在本程序的①第一處和③第三處可以加上,關(guān)閉后程序并不在運(yùn)行。否則,程序?qū)⒊霈F(xiàn)錯(cuò)誤,錯(cuò)誤如下:
輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 1 輸出圖書書名: 數(shù)據(jù)結(jié)構(gòu) book:數(shù)據(jù)結(jié)構(gòu) 輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 Exception?in?thread?"main"?java.util.NoSuchElementException at?java.base/java.util.Scanner.throwFor(Scanner.java:937) at?java.base/java.util.Scanner.next(Scanner.java:1594) at?java.base/java.util.Scanner.nextInt(Scanner.java:2258) at?java.base/java.util.Scanner.nextInt(Scanner.java:2212) at?com.booklent.BookLent.BookBorrow(BookLent.java:29) at?com.booklent.BookLent.BookBorrow(BookLent.java:39) at?com.booklent.BookLent.main(BookLent.java:16)
歡迎有看法者提出意見!另外附上運(yùn)行結(jié)果如下:
輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 1 輸出圖書書名: 紅樓夢 com.booklent.NoBookException:?圖書不存在異常 輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 a 命令輸入錯(cuò)誤!請根據(jù)提示輸入數(shù)字命令! 輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 1 輸出圖書書名: 數(shù)據(jù)結(jié)構(gòu) book:數(shù)據(jù)結(jié)構(gòu)
輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 2 輸入圖書序號(hào): 5 com.booklent.NoBookException:?沒有此序號(hào)的書 輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書 2 輸入圖書序號(hào): 1 book:高數(shù)
package?com.booklent; import?java.util.Scanner; import?java.util.Set; import?java.util.Arrays; import?java.util.HashSet; import?java.util.InputMismatchException; public?class?BookLent?{ ????static?String[]?books?=?{"數(shù)據(jù)結(jié)構(gòu)","高數(shù)","計(jì)算機(jī)"}; ???? ????public?static?void?main(String[]?args)?{ ????????//?TODO?Auto-generated?method?stub ????????BookLent?book?=?new?BookLent(); ????????book.BookBorrow(); ????????} ???????? ????????public?boolean?useSet(String[]?arr,?String?targetValue)?{ ???? ????????????Set<String>?set?=?new?HashSet<String>(Arrays.asList(arr)); ???? ????????????return?set.contains(targetValue); ????????} ???????? ????????public?void?BookBorrow()?{ ????????????try?{ ????????????????System.out.println("輸入命令:1.按照名稱查找圖書;2.按照序號(hào)查找圖書"); ????????????????Scanner?input?=?new?Scanner(System.in); ????????????????int?number?=?input.nextInt(); ????????????????if(number?==?1)?{ ????????????????????System.out.println("輸出圖書書名:"); ????????????????????Scanner?input1?=?new?Scanner(System.in); ????????????????????String?bookname?=?input1.nextLine(); ????????????????????boolean?bookpres?=?useSet(books,bookname); ????????????????????if(bookpres)?{ ????????????????????????System.out.println("book:"+bookname); ????????????????????????//input1.close();①第一處 ????????????????????????}else?{ ????????????????????????//input1.close();②第二處 ????????????????????????throw?new?NoBookException("圖書不存在異常")?; ????????????????????????} ?????????????????????}else?if(number?==2)?{ ?????????????????????????System.out.println("輸入圖書序號(hào):"); ?????????????????????????Scanner?input2?=?new?Scanner(System.in); ?????????????????????????int?booknum?=?input2.nextInt(); ?????????????????????????if(booknum>=0?&&?booknum?<?books.length)?{ ?????????????????????????????System.out.println("book:"+books[booknum]); ?????????????????????????????//input2.close();③第三處 ?????????????????????????}else?{ ?????????????????????????????//input2.close();④第四處 ?????????????????????????????throw?new?NoBookException("沒有此序號(hào)的書"); ?????????????????????????} ?????????????????????????//input.close();⑤第五處 ??????????????????????} ????????????????????}catch(InputMismatchException?e){ ????????????????????????System.out.println("命令輸入錯(cuò)誤!請根據(jù)提示輸入數(shù)字命令!"); ????????????????????????BookBorrow(); ????????????????????}catch(NoBookException?e){ ????????????????????????System.out.println(e); ????????????????????????BookBorrow(); ????????????????????} ????????} }
2019-12-20
關(guān)于scanner.close(),不可以用try with resource 來自動(dòng)關(guān)閉嗎,大部分輸入輸出流都繼承了那個(gè)自動(dòng)關(guān)閉接口,應(yīng)該可以用吧
2019-10-08
為什么沒有throws 異常類就可以直接拋出異常,不懂throws和throw的關(guān)系,請指教
2019-10-07
2019-08-06
寫的很清晰
2019-07-24
2019-07-22
大佬,你的后面有兩個(gè)catch,前面只有一個(gè)try怎么沒有報(bào)錯(cuò)0-0。麻煩大佬幫忙解惑一下,謝謝哦
2019-06-11
import
?java.util.Set;
import
?java.util.HashSet;前面幾章有這兩個(gè)????
2019-05-20
給你點(diǎn)贊? 互相學(xué)習(xí)