拋出不了異常。
求助:我這個程序的按照名稱查找拋出不了異常。
package?com.imooc.exception_test;
import?java.util.Scanner;
public?class?Book?{
public?static?void?main(String[]?args)?{
//?用字符串數組保存書籍信息
String[]?book?=?{?"數據結構",?"Java實戰開發",?"html5",?"javascript",?"高等數學"?};
Book?myBook?=?new?Book();
//?處理IO
System.out.println("按照命令查找書籍:1-按照名稱查找書籍;2-按照序號查找書籍");
Scanner?scanner1?=?new?Scanner(System.in);
try?{
int?k?=?scanner1.nextInt();
if?(k?==?1)?{
System.out.println("請輸入書籍的名字:");
Scanner?scanner2?=?new?Scanner(System.in);
String?c?=?scanner2.nextLine();
myBook.findByname(c,?book);
}
if?(k?==?2)?{
System.out.println("請輸入書籍的序號");
Scanner?scanner3?=?new?Scanner(System.in);
int?c?=?scanner3.nextInt();
myBook.findByIndex(c,?book);
}
}?catch?(Exception?e)?{
//?TODO:?handle?exception
System.out.println("命令輸入錯誤,請按照提示輸入數字命令");
}
}
//?按名查找,拋出“書名不存在異?!? public??void?findByname(String?input,?String?book[])?{
try?{
for?(int?i?=?0;?i?<?book.length;?i++)?{
if?(book[i]?==?input)?{
System.out.println("book:"?+?book[i].toString());
}
}
}?catch?(Exception?e)?{
//?TODO:?handle?exception
e.printStackTrace();
System.out.println("書名不存在異常");
}
}
//?按序號查找,拋出“序號不存在異?!? public??void?findByIndex(int?index,?String?book[])?{
try?{
System.out.println("book:"?+?book[index].toString());
}?catch?(Exception?e)?{
//?TODO:?handle?exception
e.printStackTrace();
System.out.println("這本書的序號不存在異常!");
}
}
}
2014-11-17
這里判斷字符串的時候不要用==,要用equals去比較,將代碼中40的==換成equals就可以了。這里并不是拋出異常,而是判斷全部是false