//这是测试类部分,自定义异常类大家都一样,就不贴了:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
t.borrow();
}
public void borrow(){
String[] books={"西游记","三国演义","水浒传","红楼梦"};
Scanner input=new Scanner(System.in);
System.out.println("*******欢迎使用图书馆借书系统*******");
System.out.println("1. 按照书名查找图书 2.按照序号查找图书");
try{
int num=input.nextInt();
if(num==1){
System.out.println("请输入书名:");
String name=input.next();
for(int i=0;i<books.length;i++){
if(books[i].equals(name)){
System.out.println("找到图书---"+books[i]);
}else{
throw new NobookException("图书不存在,请重新输入");
}
}
}else if(num==2){
System.out.println("请输入序号:");
int no=input.nextInt();
if(no>0&&no<=books.length){
System.out.println("找到图书---"+books[no-1]);
}else{
throw new NobookException("图书不存在,请重新输入");
}
}else{
throw new ErrorCodeException("命令错误,请重新输入");
}
}catch(NobookException e){
System.out.println(e.getMessage());
borrow();
}catch(ErrorCodeException e){
System.out.println(e.getMessage());
borrow();
}catch(InputMismatchException e){
System.out.println("请按提示重新输入!");
borrow();
}
}
}
总体上说没有大问题,就是有一个地方有个小问题,按照书名找书那里,抛出“图书不存在”异常的时候(throw new NobookException("图书不存在,请重新输入");),是在for语句里面,程序无论如何都会抛出异常。
因为当你输入书名是“西游记”的时候,当i循环到等于1 的时候抛出异常,当你输入的书名不是“西游记”的时候,i=0马上就抛出异常了。
应该定义一个变量,保存book[i]的值然后通过判断该变量的值 输出图书 不然代码总是在for循环后抛出异常
多处错误
贴一下完整代码塞,参考一下哈哈
粘贴上来格式怎么成这样了 好乱