问答详情
源自:1-9 经验总结

终于做完了,大家帮忙看看有哪里还需要优化完善的

//这是测试类部分,自定义异常类大家都一样,就不贴了:

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();

}

}


}


提问者:奇大姨父 2019-03-29 11:46

个回答

  • 慕无忌7406412
    2019-04-01 09:31:19
    已采纳

    总体上说没有大问题,就是有一个地方有个小问题,按照书名找书那里,抛出“图书不存在”异常的时候(throw new NobookException("图书不存在,请重新输入");),是在for语句里面,程序无论如何都会抛出异常。

    因为当你输入书名是“西游记”的时候,当i循环到等于1 的时候抛出异常,当你输入的书名不是“西游记”的时候,i=0马上就抛出异常了。


  • xubigeyes
    2019-04-23 14:43:19

    应该定义一个变量,保存book[i]的值然后通过判断该变量的值  输出图书 不然代码总是在for循环后抛出异常

  • 慕丝4409378
    2019-04-14 12:17:56

    多处错误

  • qq_珍惜现在回忆从前_0
    2019-04-01 20:39:18

    贴一下完整代码塞,参考一下哈哈


  • 奇大姨父
    2019-03-29 11:47:46

    粘贴上来格式怎么成这样了  好乱