继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

作业-借书系统-据说标题不能少于10个字

sky4300670
关注TA
已关注
手记 4
粉丝 1
获赞 30

参考了其他同学的手记,自己折腾了好久时间终于也写出来了,请多多指教!

package books;
import java.util.Scanner;

public class BorrowBooksSystem2 {

    private static String[] bk = {"数学","语文","计算机","政治","历史"};
    private static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) throws Exception {
        PrintBooks();// 打印可借书籍的名称和序号列表

        while(true){// 循环搜索功能,直到搜索到正确的书籍
            try{
                String book;// 定义一个用于接收书籍名称的变量
                System.out.println("输入1-通过序号选择书籍,输入2-通过书名选择书籍:");
                int s = SelectMode();// 定义一个用于接收选择搜索模式的变量
                switch(s){
                case 1:
                    book = GetByBooksNum();
                    System.out.println("您选择的书籍是:" + book);
                    break;//跳出switch语句
                case 2:
                    book = GetByBooksName();
                    System.out.println("您选择的书籍是:" + book);
                    break;
                case -1:// 除了1或2,其他的整数均为错误
                    System.out.println("请确认输入的整数为1或2。");
                    continue;// 进入下一次循环
                }
            }catch(Exception e){// 打印捕获到的异常信息
                System.out.println("发现异常:" + e.getMessage());
                continue;
            }
            break;//跳出while语句
        }
    }

    private static void PrintBooks(){// 用于打印书籍可借书籍的列表
        System.out.println("欢迎使用借书系统,以下是书籍列表:");
        System.out.println("序号:\t书名:");
        for(int i = 1;i <= bk.length;i++){
            System.out.println(i + ".\t" + bk[i-1]);
        }
    }

    private static int SelectMode() throws Exception{// 声明抛出的异常
        try{
            int se = sc.nextInt();
            if(se == 1 || se == 2){
                return se;
            }else{
                return -1;
            }
        }catch(Exception e){// 用initCause包装异常并抛出
            Exception ex = new Exception("SelectMode输入的不是整数!");
            ex.initCause(e);
            sc = new Scanner(System.in);//如果没有对sc的重新实例化,则main函数会陷入死循环!
            throw ex;
        }
    }

    private static String GetByBooksName() throws Exception{
        System.out.println("输入您要搜索书籍的名称:");
        String name = sc.next();
        for(int i = 0;i < bk.length;i++){
            if(bk[i].equals(name)){// 遍历对比输入的图书名字是否在bk数组里
                return name;
            }
        }
        throw new Exception("输入的图书名称不存在!");
    }

    private static String GetByBooksNum() throws Exception{
        System.out.println("输入您要搜索书籍的序号:");
        try{
            int num = sc.nextInt();
            return bk[num-1];
        }catch(ArrayIndexOutOfBoundsException e){// 数组下标越界异常,打包并抛出
            ArrayIndexOutOfBoundsException arr = new ArrayIndexOutOfBoundsException("输入的图书序号不存在!");
            arr.initCause(e);
            throw arr;
        }catch(Exception e){
            Exception ex = new Exception("BooksNum输入的不是整数!");// 传值错误异常,打包并抛出
            ex.initCause(e);
            sc = new Scanner(System.in);//如果没有对sc的重新实例化,则main函数会陷入死循环!
            throw ex;
        }
    }
}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP