手记

Java入门第三季 模拟借书系统

借鉴了几位大神的
Jieshu类

public class Jieshu {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
  LendBook le = new LendBook();
  le.xuanZhe(); //调用xuanZhe方法

}

}

LendBook类

import java.util.InputMismatchException;
import java.util.Scanner;

public class LendBook {
String[] books = {"语文","数学","英语","Java","数据结构"};
public void xuanZhe(){
  while(true){
      String bookName; 
      try{
      int num = getKey();  //进行命令选择,返回值赋值给num
      switch(num){
      case 1:
          bookName = getBookName(books); //获取图书名称
          System.out.println("book:"+bookName);
          break;  //结束switch
      case 2:
          bookName = getBookNumber(books); //获取图书序号
          System.out.println("book:"+bookName);
          break;
      default:
              //输入除1,2以外的数字,输出错误
          System.out.println("命令输入错误");
          continue;
      }
      break;  //执行完switch后,结束while循环
      }catch(InputException e){ //输入类型不是数字时
          System.out.println(e.getMessage()); //获取异常的信息
          continue;
      }catch(BookException e){ //输入的图书不存在时
          System.out.println(e.getMessage());

      }

      }   
  } 

public int getKey() throws InputException{
   System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
      Scanner input = new Scanner(System.in);
      try{
      int y = input.nextInt();
      return y;
    //捕获输入类型不匹配,就是输入的不是整数时
      }catch(InputMismatchException e){  
          InputException InException = new InputException("命令输入错误!请根据提示输入数字命令!");
          InException.initCause(e); //保存原始异常
          throw InException;  //抛出自定义的异常
      }
}
  public String getBookName(String[] books) throws   BookException,InputException{
     System.out.println("请输入图书名称:");
     Scanner bN = new Scanner(System.in);

       String bookName = bN.next();
   for(int i=0;i<books.length;i++){
     //将输入的图书与系统中的图书相互比对,看输入的图书是否存在
       if(bookName.equals(books[i])){ 
/* 存在则返回图书。因为return只是表示返回,代表这个方法结束,
 * 不是程序结束,同一个方法内执行到return语句时,return后面的
 *语句都不执行,除了try{}catch{}finally{}中的finally里面的语句
 *必须执行外        
 */
           return books[i];
       }
   }
   //如果return没执行,则抛出异常
   throw new BookException("图书不存在");

   }

public String getBookNumber(String[] books) throws BookException{
   while(true){
   System.out.println("输入图书序号:");
   Scanner Number = new Scanner(System.in);
   try{
       int bookNumber = Number.nextInt();
       return books[bookNumber-1];
       //数组下标越界异常,就是没有这个序号的图书
   }catch(ArrayIndexOutOfBoundsException e){
       BookException BoException = new BookException("图书不存在");
       BoException.initCause(e);
       throw BoException;

   }catch(InputMismatchException e){ 
       System.out.println("命令输入错误!请根据提示输入数字命令!");
       continue; 
   }
   }
}
}

BookException类

//自定义的异常
public class BookException extends Exception {
public BookException(String message){
    super(message);
}
}

InputException类

public class InputException extends Exception {
public InputException(String message){
    super(message);
}
}
11人推荐
随时随地看视频
慕课网APP

热门评论

我暑假也在自学这个java入门,都是看大佬你的参考代码,十分通俗易懂!!

你好!我想问个问题,如果GETKEY()方法抛出异常 那么switch后面的break是没有执行吗?直接就进行了下一个while循环吗

查看全部评论