手记

java入门第三季第一章项目答案

package com.imooc.test;

import java.util.*;

public class BookManager {
static Scanner reader = new Scanner(System.in);

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[] books = { "C语言", "数据结构", "汇编语言", "高数", "大学语文", "毛概" };
    while (true) {
        System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
        String book;
        try {
            // 取得整型命令
            int command = inputCommand();
            // 根据不同命令值,进行不同操作
            switch (command) {
            case 1:
                book = getBookByName(books);
                System.out.println("book:" + book);
                break;
            case 2:
                book = getBookByNum(books);
                System.out.println("book:" + book);
                break;
            case -1:
                System.out.println("输入的数字有误,请重新输入!");
                continue;
            default:
                System.out.println("输入的类型有错误,请重新输入!");
                continue;
            }
        } catch (Exception e) {
            // 捕获”图书不存在异常“时,要求重新输入命令
            System.out.println(e.getMessage());
            continue;
        }

    }

}

// 利用图书名称查询图书的方法
private static String getBookByName(String[] books) throws Exception {
    System.out.println("请输入图书名称:");
    String name = reader.next();
    for (int i = 0; i < books.length; i++) {
        if (name.equals(books[i])) {
            return books[i];
        }
    }

    throw new Exception("没有该书本!");

}

// 利用图书序号来查询图书的方法
private static String getBookByNum(String[] books) throws Exception {
    while (true) {
        System.out.println("请输入图书序号:");
        try {
            // 获取输入的图书序号(数组下标)
            int index = inputCommand();
            // 若返回值为-1
            if (index == -1) {
                System.out.println("命令输入错误,请根据命令输入数字!");
                continue;
            }
            String book = books[index-1];
            return book;
        } catch (ArrayIndexOutOfBoundsException e) {
            // 若不出现”数组下标越界异常“,则返回相应位置的图书
            Exception bookNotExits=new Exception("命令错误!");
            bookNotExits.initCause(e);
            throw bookNotExits;
        }
    }
}

// 从控制台输入命令,用于输入命令和输入图书序号
private static int inputCommand() {
    int command;
    try {
        command = reader.nextInt();
        return command;
    } catch (Exception e) {
        // 若输入字符型或者字符串,则抛出异常,捕获该异常,抛出”错误命令异常“
        reader = new Scanner(System.in);
        // 返回-1
        return -1;
    }
}

}

1人推荐
随时随地看视频
慕课网APP