视频一点点看过来的,每个小结的案例都跟着做,事后也能自己写出来。但是一到最后的小项目就蒙了,大体思路有但是小的细节实现老是出错。
第三期的图书系统,我参照上一期的租车,做个book类给每本书序号sn和书名name,结果不懂怎么把输入书名inputName与每个book对象的name做循环判断。
看着别人的代码整体仿写,结果tyr-catch的时候无论try里面是否有问题,都会顺序走到catch里面,哪里的问题啊。。。
package com.imooc.LoanDesk; import java.util.InputMismatchException; import java.util.Scanner; public class LoanDesk { // Book[] b = {new Book(1,"数据结构"), new Book(2,"高等数学"), new Book(3,"Java核心1"), new Book(4,"Java核心2")}; String[] book = {"数据结构", "高数", "Java核心技术卷一", "Java核心技术卷二"}; // command()接受输入并返回1或2,不是整数抛出错误,不是1或2抛出错误 public int command() throws Exception { int i; Scanner input = new Scanner(System.in); System.out.println("如何查找图书?1.按名称 2.按序号"); try { i = input.nextInt(); } catch (InputMismatchException e) { throw new InputMismatchException("请输入数字!程序结束!"); } if ((i!=1) || (i!=2)) { throw new OtherException("请输入1或2!"); } return i; } // searchName()接收先接受 public void searchName() throws NoBookException { // Book a = new Book(); System.out.print("请输入书名:"); Scanner input = new Scanner(System.in); String name = input.nextLine(); for (int i=0; i < book.length; i++) { if (name.equals(book[i])) { System.out.println("找到了!正在为《"+book[i]+"办理手续!"); break; } if (i == book.length) { throw new NoBookException("没有这本书。"); } } } // searchSN() public void searchSN() throws NoBookException { Scanner input = new Scanner(System.in); int i = input.nextInt(); if (i>0 && i<book.length) { System.out.println("找到了!正在为《"+book[i]+"》办理手续!"); } else { throw new NoBookException("没有这么多书啊。。"); } } // 主程序 // 在while循环中,用command()询问并接受查找方式s // 询问并接收书名并调用searchName()获取结果or询问并接收序号并调用searchSN()获取结果 public static void main(String[] args) { Scanner input = new Scanner(System.in); LoanDesk ld = new LoanDesk(); int s = 0; while (true) { try {s = ld.command();} catch (Exception e) {System.out.println("输入错误,但是详情显示不出来!");} switch (s) { case 1: try { ld.searchName(); } catch (NoBookException e) { e.printStackTrace(); System.out.println("通过此书名找不到"); } break; case 2: try { ld.searchSN(); } catch (NoBookException e) { e.printStackTrace(); System.out.println("通过此序号找不到"); } } } } }
重新看,一定要扎实基础的!