作业—模拟借书系统
package com.imooc;
import java.util.Scanner;
public class BookLending {
// 定义图书数组
static Books[] booksToInquery = { new Books(1, "Java开发实战修炼"),
new Books(2, "JavaWeb开发实战经典"), new Books(3, "疯狂android讲义"),
new Books(4, "android权威指南"), new Books(5, "HeadFirst设计模式") };
static Scanner sc = new Scanner(System.in);
// 主查询方法
public static void inquery() throws Exception {
System.out.println("欢迎登录模拟借书系统!"); // 进入系统
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书"); // 选择查询类型
try {
int input = inputCommand(); // 将控制台输入的数字、字符、字符串转化1,2,-1
switch (input) {
case 1: // 输入1,则按照书名查询
System.out.println("输入图书名称:");
String bookName = sc.next();
checkName(bookName);
break;
case 2: // 输入2,则按照编号查询
checkSerial();
break;
case -1: // 输入字符或字符串,则提示错误,重新输入
System.out.println("命令输入错误!请根据提示输入数字命令!");
inquery();
default: // 输入其他类型,提示错误
System.out.println("命令输入错误!");
inquery();
}
} catch (Exception e) {
// 捕获”图书不存在异常“时,要求重新输入命令
System.out.println(e.getMessage());
inquery();
}
}
// 从控制台输入命令,用于选择查询类型以及选择查询编号
public static int inputCommand() {
try {
int input = sc.nextInt();
return input;
} catch (Exception e) {
// 若输入字符型或者字符串,则抛出异常,捕获该异常,抛出"错误命令异常"
sc = new Scanner(System.in);
return -1;
}
}
// 按照书名查找图书
public static void checkName(String st) throws Exception {
for (int i = 0; i < booksToInquery.length; i++) {
// 如输入书名正确,则返回相应位置图书
if (st.equals(booksToInquery[i].getName())) {
System.out.println("序号: " + booksToInquery[i].serial + "\t"
+ "书名: " + booksToInquery[i].name);
System.exit(0);
}
}
throw new Exception("图书不存在哦!");
}
// 按照编号查找图书
public static void checkSerial() throws Exception {
System.out.println("输入图书序号:");
try {
int bookSerial = inputCommand(); // 将输入的序号做一个转化,输入数字则返回数字,输入字符和字符串则返回-1
// 如果输入字符及字符型,则提示错误,重新输入
if (bookSerial == -1) {
System.out.println("命令输入错误!请根据提示输入数字命令!");
checkSerial();
}
// 如输入序号正确,则返回相应位置图书
for (int i = 0; i < booksToInquery.length; i++) {
if (bookSerial == booksToInquery[i].serial) {
System.out.println("序号: " + booksToInquery[i].serial + "\t"
+ "书名: " + booksToInquery[i].name);
System.exit(0);
}
}
} catch (ArrayIndexOutOfBoundsException e) {
// 输入的序号不存在(引发"数组下标越界异常"),则抛出"图书不存在异常"
Exception bookNotExists = new Exception("图书不存在哦!");
bookNotExists.initCause(e);
throw bookNotExists;
}
}
public static void main(String[] args) throws Exception {
inquery();
}
}
package com.imooc;
public class Books {
public String name;
public int serial;
public Books(int serial, String name) {
this.name = name;
this.serial = serial;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSerial() {
return serial;
}
public void setSerial(int serial) {
this.serial = serial;
}
}