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

Java入门第三季1.9问题编码

标签:
Java

不多说,直接上代码,有什么问题写评论里,我再修改完善
强化版发布,自动判断搜书途径,更少的异常状况,详情请见:Java入门第三季1.9问题编码 Plus版
测试程序

import java.util.*;
public class TestLendBook
{
    public static void main(String[] args) 
    {
        LendBook lb=new LendBook();
        lb.initialBook();//初始化书籍信息
        lb.checkBook();//找书
    }
}

查书系统

class LendBook
{
    private String[] books=new String[4];
//初始化书籍
    void initialBook(){
        books[0]="西游记";
        books[1]="三国演义";
        books[2]="水浒传";
        books[3]="红楼梦";
    }
//找书总程序,所有自定义异常都在这里catch
    void checkBook(){
        try{
            int i=getKind();//获取查找类型
            if(i==1)nameCheck();//名称查找
            else numCheck();//序号查找
        }catch(InsException e){//捕获输入异常,输出信息
            System.out.println("命令输入错误,请根据提示输入数字");
            checkBook();//重新调用找书程序
        }catch(BookException e){//捕获书籍不存在异常,输出信息
            System.out.println("图书不存在");
            checkBook();//重新调用找书程序
        }
    }
//获取查找类型
    int getKind()throws InsException{
        Scanner in=new Scanner(System.in);
        int ins=0;
        System.out.println("输入命令:1、名称 2、序号");
        try{
            ins=in.nextInt();
            if(ins==1 || ins==2) return ins;
            else throw new InsException();//输入数字不是1,2也要抛出异常
        }catch(InputMismatchException e){//捕获来自in.nextInt()的异常
            throw new InsException();//抛出新的异常
        }
    }
//通过名称查找书籍
    void nameCheck()throws BookException{
        Scanner inName=new Scanner(System.in);
        System.out.println("输入图书名称:");
        String name=inName.next();
        for(String book:books){
            if(book.equals(name)){
                System.out.println("book: "+name);
                return;//如果找到匹配项则直接返回
            }
        }
        throw new BookException();//for循环结束还没找到,抛出异常
    }
//通过序号查找异常
    void numCheck()throws BookException,InsException{
        Scanner inNum=new Scanner(System.in);
        System.out.println("输入图书序号:");
        try{
            int num=inNum.nextInt();
            if(num>0 && num<5)
                System.out.println("book: "+books[num-1]);
            else throw new BookException();//序号超出范围,输出异常
        }catch(InputMismatchException e){//捕获来自inNum.nextInt()的异常
            throw new InsException();//抛出输入有误异常
        }
    }
}

最后是自定义异常

//输入有误异常
class InsException extends Exception
{
    InsException(){super();}
}
//图书不存在异常
class BookException extends Exception
{
    BookException(){super();}
}
点击查看更多内容
26人点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消