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

模拟借书系统

丿勿忘初心丶
关注TA
已关注
手记 1
粉丝 5
获赞 6
package com.test.book;

import java.util.InputMismatchException;
import java.util.Scanner;

public class BookTest {

    String[] books = { "数据结构", "高数", "英语", "语文" };

    public static void main(String[] args) {
        BookTest bookTest = new BookTest();

        // 获取正确命令(1或2)
        try {
            boolean isTrue = true;
            System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
            Scanner sc = new Scanner(System.in);
            int one = sc.nextInt(); // 命令
            outer: while (one != 1 || one != 2) { // 当不为1或2时,重新输入
                if (one == 1) {
                    // 当输入命令为1时
                    // System.out.println(one);
                    isTrue = bookTest.findByName(one);
                    if (!isTrue) {
                        one = 0;
                        System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
                        continue outer;
                    }
                    // break;
                } else if (one == 2) {
                    // 当输入命令为2时
                    // System.out.println(one);
                    isTrue = bookTest.findByNum(one);
                    if (!isTrue) {
                        one = 0;
                        System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
                        continue outer;
                    }
                    // break;
                } else {
                    one = sc.nextInt();
                }

            }
        } catch (InputMismatchException e) {
            e.printStackTrace();
        }

    }

    // 按照名称查找图书,命令为1
    public boolean findByName(int order) {
        boolean isExist = false;
        System.out.println("请输入图书名称:");
        try {
            // 接收输入数据(数据为输入的图书名称)
            Scanner sc = new Scanner(System.in);
            String two = sc.nextLine();
            // 判断字符串数组中是否存在该图书名称
            int x = 0;
            for (int i = 0; i < books.length; i++) {
                if (books[i].equals(two)) {
                    isExist = true;
                    x = i;
                }
            }
            if (!isExist) {
                System.out.println("图书不存在!");
                isExist = false;
            } else {
                // 打印出图书名称
                System.out.println("book:" + books[x]);
            }
        } catch (InputMismatchException e) {
            e.printStackTrace();
        }
        return isExist;
    }

    // 按照序号查找图书,命令为2
    public boolean findByNum(int order) {
        boolean isExist = false;
        System.out.println("请输入图书序号:");
        try {
            // 接收输入数据(数据为输入的图书名称)
            Scanner sc = new Scanner(System.in);
            int three = sc.nextInt() - 1;
            // 判断字符串数组中是否存在该图书编号
            if (three < 0 || three >= books.length) {
                System.out.println("图书编号不存在");
            } else {
                System.out.println("book:" + books[three]);
                isExist = true;
            }
        } catch (InputMismatchException e) {
            e.printStackTrace();
        }
        return isExist;
    }

}
还有很多需要完善的地方,欢迎大家指点和交流
打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

你这代码好像死循环l

我的思考是,构建一个for循环,然后里面加try和catch,try里面用于获取用户输入的信息,然后执行判断后就break,当用户输入不规范时catch会捕捉到异常,然后输入提示信息,然后加个continue,直到用户输入正确才会跳出循环。

outer: while (one != 1 || one != 2) { // 当不为1或2时,重新输入 
    if (one == 1) { // 当输入命令为1时 // 
        System.out.println(one); 
        isTrue = bookTest.findByName(one); 
        if (!isTrue) { 
            one = 0;
             System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书"); 
             continue outer; 
 }

当isTrue为False时,给one赋值0,为什么要println?又没有对象接受,而且one为0直接退出循环

查看全部评论