finally不执行。
这个finally只执行了 第一个号System.out.println("是否继续查找:Y是,N否");
之后不能进行用户输入
问下各位怎么解决啊
这个finally只执行了 第一个号System.out.println("是否继续查找:Y是,N否");
之后不能进行用户输入
问下各位怎么解决啊
2016-08-04
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("图书不存在"); } }
问题都在注释里写了
目前最终的代码
举报