为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

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

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;
        }
    }
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消