package try_catch;
import java.util.Scanner;
public class TryCatchPractice2 {
//在类开始声明,则其他方法都能调用
Scanner in=new Scanner(System.in);
NoBookException NoB=new NoBookException();
String[] books={"语文","数学","英语"};
static TryCatchPractice2 trycat=new TryCatchPractice2();
//主函数
public static void main(String[]args) throws Exception{trycat.InputClassException();
}
//命令错误
public void InputClassException()throws Exception{
try{
System.out.println("欢迎光临本图书管理系统");
System.out.println("1.书名查询。2.序号查询");
int a=in.nextInt();
switch(a){
case 1://查找图书
trycat.findBooks();
break;
case 2://查找序号
trycat.findBooksNum();
break;
default:
throw new NoBookException("错误命令,请输入整数1或2");//如果输入数字非1,2则抛出
}
}catch(NoBookException e){
//InputMismatchException InE=new InputMismatchException();
//InE.initCause(e);
//求教如何在扫描仪我输入非int型时会提示错误命令,例如a
e.printStackTrace();
System.out.println("请重新输入:");
InputClassException();
}catch(Exception e){
backRoll();
}
}
//当输入值为非整数时,调用此方法//不要问我为什么另外新建一个方法,只是因为提示变红字
public void backRoll() throws Exception{
try{
throw new Exception("错误命令,请输入整数");
}catch(Exception e){
e.printStackTrace();
in.next();
System.out.println("请重新输入:");
InputClassException();
}
}
//查找图书
public void findBooks()throws Exception{
System.out.println("请输入您要查询的图书:");
String b=in.next();
boolean flag=false;
try{
for(int i=0;i
if(b.equals(books[i])){//如果查询的书名不为空,输出书本信息
System.out.println("查询成功"+books[i]);
flag=true;
}
}
while(flag==false){//如果查询为空,抛出异常
throw new NoBookException("图书不存在");
}
}catch(NoBookException e){
e.printStackTrace();//捕捉到异常后输出异常位置
NoB.initCause(e);
System.out.println("请重新输入:");
InputClassException();//重新进入系统
}
}
//查找序号
public void findBooksNum()throws Exception{
System.out.println("请输入您要借阅的图书序号:");
int i=in.nextInt();
try{
if(i=0){//如果查询的序号不越界,输出书本信息
System.out.println("查询成功");
System.out.println("您查询的是"+books[i]);
}else{//越界则抛出数组越界异常
throw new NoBookException("序号错误");
}
}catch(NoBookException e){
e.printStackTrace();//捕捉到异常后输出异常位置
NoB.initCause(e);
System.out.println("请重新输入:");
InputClassException();//重新进入系统
}
}
//in.close();//为什么这里打in.close.关闭扫描仪会报错
}