问答详情
源自:1-9 经验总结

作业—模拟借书系统

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;

}


}


提问者:古典牧童 2015-04-29 08:13

个回答

  • 尒苞傛
    2015-12-15 21:23:25

    !!!!