package com.imooc;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {public static void main(String[] args) throws BookException {
//定义一个Book类数组用来存储书籍,拟定义四本书
Book[] book = {new Book("论语",1),new Book("高数",2),new Book("语文",3),new Book("法语",4)};
//提前定义一个用户选择的选项方式,默认为0
int chose = 0;
//定义书名,后期存储书名,默认为空
String bookName = null;
//定义书序号。后期存储书序号
int bookNum;
//提前定义一个输入流
Scanner sc = null;
//定义是否有用户想要的书,默认false
boolean ifHaveBook = false;
//体钱定义一本书Book,用于存储用户选择的书
Book needBook = null;
//当用户输入有误时,弹出提示并重新开始输入选择书籍
while(chose !=1&&chose!=2){
System.out.println("输入书名请按1,输入序号请按2");
try {
//得到用户输入的值,并存在体钱准备的chose参数中
sc = new Scanner(System.in);
chose = sc.nextInt();
//判断用户选择的找书方式,如果输入的数字不是1或者2,抛出自建错误类ErrorNumException
if(chose !=1&&chose !=2){
throw new ErrorNumException();
}
//如果用户选择的是1,输入名称来找书
if(chose==1){
System.out.println("请输入你想要的的书籍名称");
//得到用户的输入值,并赋值给提前准备的bookName中
sc = new Scanner(System.in);
bookName = sc.nextLine();
//遍历书的数组,判断是否有用户输入的书名的书
for(Book k:book){
//如果找到对应书名的书,将ifHaveBooK赋值为true,代表有书,找到的书存在needBook中
if(k.getName().equals(bookName)){
ifHaveBook = true;
needBook = k;
}
}
//根据ifHaveBook的结果判断是否找到书,找到则输出找到的书的信息,没有则抛出自定义异常NoBookNameException
if(ifHaveBook){
System.out.println("找到您要的书籍:"+needBook.getName());
}else{
//chose清零是为了如果没有找到书,让循环继续运行,重新开始找书
chose = 0;
throw new NoBookNameException();
}
//如果用户选择的是2,输入序号来找书
}else{
System.out.println("请输入你想要的的书籍序号");
//得到用户输入的序号并存入bookNum中
sc = new Scanner(System.in);
bookNum = sc.nextInt();
//遍历书数组,判断是否有用户输入的书序号的书
for(Book k:book){
//如果找到对应书名的书,将ifHaveBooK赋值为true,代表有书,找到的书存在needBook中
if(k.getNum()==bookNum){
ifHaveBook = true;
needBook = k;
}
}
//根据ifHaveBook的结果判断是否找到书,找到则输出找到的书的信息,没有则抛出自定义异常NoBookNumException
if(ifHaveBook){
System.out.println("找到您要的书籍:"+needBook.getName());
}else{
//chose清零是为了如果没有找到书,让循环继续运行,重新开始找书
chose = 0;
throw new NoBookNumException();
}
}
} catch (InputMismatchException e) {
System.out.println("请按照提示输入合法数字");
} catch (ErrorNumException e) {
System.out.println("输入错误,请输入1或者2");
} catch (NoBookNameException e) {
System.out.println("根据您输入的书名,未找到相应的书籍");
} catch (NoBookNumException e) {
System.out.println("根据您输入的序号,未找到相应的书籍");
}
}
}
}