這兩期視頻最后每次做項目都不成功,該重頭看還是繼續之后再回頭?
視頻一點點看過來的,每個小結的案例都跟著做,事后也能自己寫出來。但是一到最后的小項目就蒙了,大體思路有但是小的細節實現老是出錯。
第三期的圖書系統,我參照上一期的租車,做個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("通過此序號找不到");
}?
}
}
}
}
2016-11-03
重新看,一定要扎實基礎的!