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

JAVA入门第三季 1-9 练习

标签:
Java
在调用Book类的方法中不能使用scanner的close方法,不然会在main中出现异常,有人知道为什么吗?
import java.util.Scanner;
public class BookSystem {
    public static void main(String[] args){
        Book books=new Book();
        int i=1;
        System.out.println("序号"+"\t"+"书名");
        for(String name : books.getBooks()){
            System.out.println(i+"\t"+name);
            i++;
        }
        boolean exit = false;
        Scanner sc = new Scanner(System.in);
        while(!exit){
            System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书;0-退出");
            String j = sc.next();
            try{
                switch(j){
                    case "0": exit=true;
                            break;
                    case "1": books.findByName();
                            break;
                    case "2": books.findByNum();
                            break;
                    default : throw new Exception();   //如果都不匹配,就抛出异常
                }
            }catch(Exception e){
                System.out.println("命令输入错误!请根据提示输入数字命令!");
            }
        }
        sc.close();
    }
}
public class Book {
    private String[] books={"语文","英语","数学","地理","政治","生物"};

    public String[] getBooks() {
        return books;
    }
    public void findByName(){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入图书名称:");
        String name = sc.next();
        try {
            for (String bookname : books) {
                if(bookname.equals(name)){
                    System.out.println("book:"+name);
                    //sc.close();不知道为什么不能关闭,不然就会出现异常。。。
                    return;        //如果找到图书,就直接返回
                }
            }
            throw new Exception();   //如果没找到图书,就抛出图书不存在的异常
        }catch(Exception e){
            System.out.println("图书不存在!");
            //sc.close();
        }
    }
    public void findByNum(){
        Scanner sc = new Scanner(System.in);
        System.out.println("输入图书序号:");
        try{
            int i = sc.nextInt();          //如果输入的不是整数,就会抛出InputMismatchException
            if(i<0i>books.length){
                System.out.println("图书不存在");
                //sc.close();
                return;
            }
            System.out.println("book:"+books[i-1]);
        }catch (java.util.InputMismatchException e){     //可以直接捕获Exception
            System.out.println("命令输入错误!请按照提示输入数字命令");
        }
        //sc.close();
    }
}
点击查看更多内容
1人点赞

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

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
5
获赞与收藏
8

关注作者,订阅最新文章

阅读免费教程

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消