手记

Java入门第三季———图书管理系统(自创简洁易懂版)

我们先看一下系统的 要求:

    /*
     * 1.定义字符串数组保存图书信息
     * 2.提示用户输入,分别按“书名”和“图书序号”查找图书
     * 3.根据输入信息进行适当的异常处理
     *   a.如果输入类型错误,抛出“错误命令异常”,并提示重新输入;
     *   b.如果书名不存在,抛出“图书不存在异常”,并提示重新输入;
     *   c.如果图书序号超过字符串数组范围,抛出“图书不存在”异常,并提示重新输入。
     */

根据要求,显然我们可以把输入命令、按书名查找书名、按序号查找图书作为三个独立的方法写出。注释比较详细,简单易懂,适合初学者。
下面是具体实现方法:
1.输入命令方法

//输入命令方法
    private static int inputCommand(){
        int command=0;//接收控制台的输入
        int goCatch=0;//判断catch块是否运行的标签
        try{
            Scanner input=new Scanner(System.in);
            command=input.nextInt();
        }catch(Exception e){//捕获非整型输入的异常,并输出"命令输入错误!请输入数字命令!"
            System.out.println("命令输入错误!请输入数字命令!");
            goCatch=1;
        }
        if(command!=1&&command!=2&&goCatch!=1){//如果输入的是整数,但不是1或2
            System.out.println("命令输入错误!请输入数字命令:1或2");
        }
        return command;
    }

2.按书名查找图书

//按书名查找图书
    private static void getBookByName(String[] books){
        System.out.println("请输入图书名称:");
        Scanner input=new Scanner(System.in);
        String bookName=input.next(); //接收输入的书名
        boolean notExist=true;
        for(int i=0;i<books.length;i++){//遍历查找是否有相匹配的图书
            if(books[i].equals(bookName)){
                System.out.println("已为您找到匹配图书:"+books[i]);
                notExist=false;
            }
        }
        if(notExist==true){//没有相匹配的图书,则提示"图书不存在!",并执行下一次循环
            System.out.println("图书不存在!");
        }
    }

3.按序号查找图书

//按序号查找图书
    private static void getBookByNum(String[] books){   
        boolean isException=false;//是否发生异常的标签   
        do{
            System.out.println("请输入图书序号:");
            try{                
                Scanner input=new Scanner(System.in);
                int bookNum=input.nextInt();
                System.out.println("已为您找到匹配图书:"+books[bookNum-1]);//输入无误,则输出相匹配的图书
                isException=false;
            }catch(ArrayIndexOutOfBoundsException e){//捕获数组下标越界异常,并提示"图书不存在!",请用户再次输入
                System.out.println("图书不存在!");
                isException=true;
            }catch(Exception e){//捕获命令输入错误异常,并提示"输入命令错误!请输入数字命令!",请用户再次输入
                System.out.println("输入命令错误!请输入数字命令!");
                isException=true;
            }
        }while(isException);

    }

4.main函数

public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] books={"高数","数据结构","java入门","Thinking in Java","JavaScript"};
        while(true){
            System.out.println("请输入数字命令:1-按照书名查找图书;2-按照序号查找图书");
            int command=inputCommand();
            if(command==1){
                getBookByName(books);
            }
            if(command==2){
                getBookByNum(books);
            }
        }

    }

5.运行结果:

请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
a
命令输入错误!请输入数字命令!
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
3
命令输入错误!请输入数字命令:1或2
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
1
请输入图书名称:
读者
图书不存在!
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
1
请输入图书名称:
高数
已为您找到匹配图书:高数
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
2
请输入图书序号:
赛事
输入命令错误!请输入数字命令!
请输入图书序号:
222
图书不存在!
请输入图书序号:
1
已为您找到匹配图书:高数
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
65人推荐
随时随地看视频
慕课网APP

热门评论

不过不完整呢 要是在用书名查找的时候输入数字的话 程序应该要提示 输入类型有误 希望加上这一段更好些

好厉害啊 同样是初学者的话 真是分分钟让我怀疑人生

想问下,main方法中,为什么要用while(true),这里的true是对什么东西进行判断?


查看全部评论