課程
/后端開發
/Java
/Java入門第三季
這個finally只執行了 第一個號System.out.println("是否繼續查找:Y是,N否");
之后不能進行用戶輸入?
問下各位怎么解決啊
2016-08-04
源自:Java入門第三季 1-9
正在回答
沒見過在finally里這么干的,finally一般是用來釋放資源的,不會在里面做一些等待用戶輸入的操作。
ivwv 提問者
ivwv 提問者 回復 ivwv 提問者
ziom 回復 ivwv 提問者
ivwv 提問者 回復 ziom
import?java.util.Scanner; public?class?Test1?extends?Test2?{ book?b?=?new?book(); public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub Test1?t?=new?Test1(); t.show(); } //用show方法通過if判斷調用show1和show2方法? public?void?show(){ Scanner?sc?=?new?Scanner(System.in); try?{ b.books(); int?i?=?sc.nextInt(); if?(i==1){ super.show1(); }else?if(i?==?2){ super.show2(); }else{ b.sys3(); } }catch(Exception?e){ b.sys3(); }finally{ //通過finally塊來判斷用戶接下來的操作 System.out.println("是否繼續查找:Y是,N否"); Scanner?ccc?=new?Scanner(System.in);???? //關于之前問的finally塊執行不完全的,解決辦法:可以通過在外面加一個while循環?就會繼續執行 //也可以新new一個Scanner?然后也會繼續執行 //目前這個是之前在Tese1類里new一個Scanner,所以要是只通過在finally塊里新new一個Scanner的話 //會把之前的sc.next()略過,繼續執行到下一個ccc.nextLine() //不過用用while循環里面在新new一個Scanner?和在show方法里也新new一個Scanner?就可以解決了 //目前我只知道這么多?沒說到的希望大神們能繼續說全?謝謝啦!! while(true){ ?????????????????????????? String?yes?=?ccc.nextLine(); if?(yes.equals("y")||yes.equals("Y")){ show(); break; }else?if?(yes.equalsIgnoreCase("N")||yes.equals("n")){ System.out.println("感謝使用!"); break; }else?{ b.sys3(); continue; } } } } }
import?java.util.Scanner; //用show1方法來儲存根據編號搜索圖書的程序 public?class?Test2?extends?book{ Scanner?sc?=?new?Scanner(System.in); public?void?show1(){?? super.sys2(); try{ int?number?=?sc.nextInt(); if(number?==1){ super.gs(); }else?if?(number?==?2){ super.yy(); } }catch(Exception?e){ super.bcz(); }? } //用show2方法來儲存用圖書名搜索的圖書程序 public?void?show2(){ super.sys1(); try?{ String?title?=?sc.nextLine(); if?(title.equals("高數")){ super.gs(); }else?if?(title.equalsIgnoreCase("論語")){ super.ly(); }else{ super.bcz(); } }catch(Exception?e){ super.sys3(); } } }
package?tryCatchfinally; //用來儲存所用到的方法 public??class?book?{ ?? public?void?books(){ System.out.println("輸入命令:1-按照名稱查詢圖書;2-按照序號查詢圖書"); } public?void?sys1(){ System.out.println("請輸入圖書名字"); } public?void?sys2(){ System.out.println("請輸入圖書編號"); } public?void?sys3(){ System.out.println("請按提示輸入,請重新輸入"); } public?void?ly(){ System.out.println("論語"); } public?void?yy(){ System.out.println("音樂"); } public?void?gs(){ System.out.println("高數"); } public?void?bcz(){ System.out.println("圖書不存在"); } }
問題都在注釋里寫了?
目前最終的代碼
目前在if外面套了一個while循環就可以繼續執行了 但是不清楚原理 有大神能給說說嗎
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
4 回答關于finally執行問題
2 回答try-catch-finally執行順序
4 回答如果catch沒有執行會執行finally嗎??
2 回答為什么finally沒有執行?
2 回答不是return過后就退出了嗎,finally可以繼續執行,那為什么finally之后的也能執行呢
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-05
沒見過在finally里這么干的,finally一般是用來釋放資源的,不會在里面做一些等待用戶輸入的操作。
2016-08-05
問題都在注釋里寫了?
目前最終的代碼
2016-08-04