使用构造方法的重载来判断不同的BookException
package com.book;
public class BookException extends Exception{
String message;
public BookException (){
message="命令输入有错!请根据提示输入数字命令!";
}
public BookException (String name){
message="图书不存在!";
}
public BookException (int order){
message="图书不存在!";
}
}
package com.book;
public class Book {
/*指令输入错误,不是1也不是2,抛出输入异常*/
public int select(int order) throws BookException{
boolean b1=(order!=1);
boolean b2=(order!=2);
if(b1&&b2)
throw new BookException();
return order;
}
/*书名输入错误,检索不到书名,抛出图书不存在异常*/
public String jugde(String name,String []books) throws BookException{
String bookname = null;//方法返回值
boolean flag=true;
for(String book:books){//遍历图书
if(name.equals(book)){ //书名相同,
flag=false;
bookname=book; //返回书名
break; //中断循环
}
}
if(flag){ //flag为true,则表明找不到图书
BookException be=new BookException(name);
bookname=be.message;//把异常信息返回
throw be;
}
return bookname;
}
/*序号输入错误,检索不到对应数组的下标,抛出图书不存在异常*/
public String jugde(int order,String []books) throws BookException{
String bookname=null;
int i=-1;
boolean b=(order<=books.length)&&(order>=1);//输入的序号满足条件
//数组下标相对order偏移了-1,即i=order-1;
if(b){//满足条件,根据序号查书,返回书名
i=order-1;
bookname=books[i];
}else{
BookException be=new BookException(order);
bookname=be.message;//把异常信息返回
throw be;
}
return bookname;
}
}
Test类,程序的入口
package com.book;
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String []books={"数据结构","高数","大学英语","离散数学" };
Book book=new Book();
Scanner scan=new Scanner(System.in);
while(true){
System.out.println("输入命令:1-按照书名查找图书;2-按照序号查找图书;");
int input=scan.nextInt();
try {
int order=book.select(input);//会发生异常,执行到if说明没有报出异常
if(order==1){
System.out.println("输入图书名称:");
String inputBookName=scan.next();
String name=book.jugde(inputBookName,books);
System.out.println("book:"+name);
return;
}else if(order==2){
System.out.println("输入图书序号:");
int number=scan.nextInt();
String name=book.jugde(number,books);
System.out.println("book:"+name);
return;
}
} catch (BookException e) {
// e.printStackTrace();
System.out.println(e.message);
} catch (Exception e){
// e.printStackTrace();
System.out.println("其他异常");
}
}
}
}