以下代碼可以正常運行
比較不明白的是
因為按字符串查找圖書所以定義了String型保存A
如果輸入INT型數據則不會報錯
此處可如何解決
也希望收到其他可以指正的地方
package?com.ExceptionEXE;
import?java.util.Scanner;
public?class?ExceptionEXE?{
String?books[]={"0位置為空","Chinese","English","Math"};
public?static?void?main(String[]?args)?throws?NoBooksException?{
ExceptionEXE?e?=?new?ExceptionEXE();
System.out.println("輸入1,按書名查詢;輸入2,按序號查詢:");
??????Scanner?D?=?new?Scanner(System.in);???
??????int?input?=?D.nextInt();
??????switch(input){
??????case?1:
???? ??try?{
e.searchName();
}?catch?(NoBooksException?e1)?{
//?TODO?Auto-generated?catch?block
e1.printStackTrace();
}
???? ??break;
??????case?2:
???? ??try?{
e.searchNumber();
}?catch?(NoNumException?e1)?{
//?TODO?Auto-generated?catch?block
e1.printStackTrace();
}
???? ??break;
???? ??
???? ??default:
???? ??System.out.println("輸入錯誤,輸入值只能為1或2");
???? ??break;
??????}
?????????????D.close();
}
public?void?searchName()?throws?NoBooksException{
System.out.println("按照字符串查找:");
Scanner?a?=?new?Scanner(System.in);
String?A?=?a.next();
int?count?=?0;
for(int?i=0;i<books.length;i++){
if(A.equals(books[i])){
// System.out.println("相等");
System.out.println(i+"?"+books[i]);
}
count++;
if(count>books.length){
throw?new?NoBooksException("沒有圖書");
}
}
}
public?void?searchNumber()throws?NoNumException{
Scanner?a?=?new?Scanner(System.in);
System.out.println("按照數字查找:");
int?B?=?a.nextInt();
if(B<1||B>3){
throw?new?NoNumException("數字超出范圍");
}
System.out.println(B+"?"+books[B]);
?????
}
}package?com.ExceptionEXE;
public?class?NoBooksException?extends?Exception{
????public?NoBooksException(String?msg){
???? super(msg);
????}
}package?com.ExceptionEXE;
public?class?NoNumException?extends?Exception{
????public?NoNumException(String?msg){
???? super(msg);
????}
}
添加回答
舉報
0/150
提交
取消