package com.exception;
import java.util.Scanner;
//首先创建一个名叫书的类,包含id和name两个属性
class Book {
String name;
int id;
Book(int id,String name){
this.id = id;
this.name = name;
}
}
public class ExcDemo {
//主方法
public static void main(String[] args) {
Book library[] = new Book[5];//创建了一个叫图书馆的数组,用于存放5本书籍
library[0] = new Book(1,"数学");
library[1] = new Book(2,"线代");
library[2] = new Book(3,"英语");
library[3] = new Book(4,"物理");
library[4] = new Book(5,"语文");
//自定义一个类,该类包含三个方法,用于抛出三种异常
class Uexcption{
//第一个方法,当输入整数不是1和2的时候(用于用户选择是输入书名还是序号的时候),反之,返回输入的整数
public int select1(int i) throws Exception{
if (i!=1&&i!=2) {
throw new Exception();
}else {
return i;
}
}
//第二个方法,当输入的书籍名字不在这5本书之内时,抛出异常,反之,返回输入的书籍名字
public String select2(String bookName) throws Exception{
if (bookName.equals(library[0].name)||bookName.equals(library[1].name)||bookName.equals(library[2].name)
||bookName.equals(library[3].name)||bookName.equals(library[4].name)
) {
return bookName;
}else {
throw new Exception();
}
}
//第三个方法,当输入的id不是这5本书的id的时候,抛出异常,反之,返回输入的id
public int select3(int id) throws Exception{
if (id>5||id<0) {
throw new Exception();
}else {
return id;
}
}
}
Scanner input = new Scanner(System.in);//创建Scanner对象,用于键盘输入
Uexcption uexc = new Uexcption();//新建一个自定义类的对象
System.out.println("输入命令:1-按照书名查找图书;2-按照序号查找图书");//提示用户选择模式
//创建一个循环,直到输入的为1或者2
int i=0;
while(i!=1&&i!=2){
try {
i = uexc.select1(input.nextInt());//调用第一个抛出异常的方法
}
catch (Exception e) {
System.out.println("输入命令错误,请根据提示输入数字命令(1或者2):");
input.nextLine();//如果没有这一行,当输入为非整形时,会陷入死循环(新手查了好久才知道,汗)
}
}
//如果用户输入1,进入书籍名字查找模式
if(i==1) {
System.out.println("请输入书名:");
String bookName = " ";
//创建一个循环,直到输入书名正确
while((bookName.equals(library[0].name)||bookName.equals(library[1].name)||bookName.equals(library[2].name)
||bookName.equals(library[3].name)||bookName.equals(library[4].name)
)==false
) {
try {
bookName = uexc.select2(input.next());//调用第二个抛出异常的方法
}
catch(Exception e){
System.out.println("输入书名有误,请重新输入:");
input.nextLine();
}
}
System.out.println("您要租借的书已经找到,书名为:"+bookName);
}
else {
//用户输入0,进入序号查找模式
System.out.println("请输入书籍的序号:");
//创建一个循环,直到序号输入正确
int id = 0;
while(id>5||id<1) {
try {
id = uexc.select3(input.nextInt());
}
catch(Exception e) {
System.out.println("输入的序号有误,请重新输入:");
input.nextLine();
}
}
System.out.println("您要租借的书已经找到,书名为:"+library[id-1].name);
}
input.close();//全部程序执行结束,关闭input
}
}