借鉴了几位大神的
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);
}
}
热门评论
我暑假也在自学这个java入门,都是看大佬你的参考代码,十分通俗易懂!!
你好!我想问个问题,如果GETKEY()方法抛出异常 那么switch后面的break是没有执行吗?直接就进行了下一个while循环吗