这两期视频最后每次做项目都不成功,该重头看还是继续之后再回头?
视频一点点看过来的,每个小结的案例都跟着做,事后也能自己写出来。但是一到最后的小项目就蒙了,大体思路有但是小的细节实现老是出错。
第三期的图书系统,我参照上一期的租车,做个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("通过此序号找不到");
}
}
}
}
}