//需要对应定义三个异常类,写的很差,好在是写出来了 只为自己纪念。
package com.guoke;
import java.util.Scanner;
import java.util.InputMismatchException;
public class SimulatedLibrarySystem {
private String [] books={"高数","数据结构","慕课","123"};//图书馆的书.不能放到main方法里面,因为放进去就是局部变量。
public static void main(String[] args) {
System.out.println("输入命令:1-按照名称查找图书;\t2-按照序号查找图书");
Scanner scan=new Scanner(System.in);//创建接收输入对象scan
SimulatedLibrarySystem s=new SimulatedLibrarySystem();//创建一个对象s,便于调用数组
int a=3;
while((a!=1)&&(a!=2)){//输入命令选择查找方式
try{
a=scan.nextInt();//将输入放入a中
s.getRightOrder(a);//判断输入是否正确,如无异常,则继续;
// System.out.println(b);
}catch(InputMismatchException e){//输入的不是整型数字,捕获异常
System.out.println("命令输入错误!请根据提示输入命令字符!");
scan.next();//获取Scanner对象扫描到的键盘输入,如果不获取,会因为while一直给异常提示
}catch(OrderNotExist f){//输入的不是1或2,捕获异常
}
}
switch(a){//进入对应的查找方式
case 1: while(a!=3){//进入方式1
System.out.println("输入图书名称");
try {
String book=scan.next();
book=s.getRightBook(book);//判断图书存在与否
System.out.println("book:"+book);
} catch (BookNotExist e) {
// TODO: handle exception
}
}
case 2: while(a!=3){//进入方式2 输入序号(数组下标)找书
System.out.println("输入图书序号");
try {
int number=scan.nextInt();//输入下标
number=s.getRightBook2(number);//判断图书存在与否
System.out.println("book:"+s.books[number]);
} catch (BookNotExist2 e) {
// TODO: handle exception
}
}
// System.out.println("over");
}
}
private void getRightOrder(int a) throws OrderNotExist{//判断输入是否为1或2,否则抛出异常
if((a!=1)&&(a!=2)){
throw new OrderNotExist();
}
}
public String getRightBook(String book) throws BookNotExist{//按书名找图书
for(int i=0;i<books.length;i++){
if(book.equals(books[i])){//找到则返回图书名
return book;
}
}throw new BookNotExist();
}
public int getRightBook2(int number) throws BookNotExist2{//按下标找图书,找到则返回图书名 否则报错
if(number>books.length-1||number<0){//下标超出数组范围抛出异常
throw new BookNotExist2();
}
return number;
}
}