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

按照需求写得,注解写得很详细,需求没提的功能也没写,Book类和自定义的异常类没放上来,供参考

package com.imooc;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {public static void main(String[] args) throws BookException {
    //定义一个Book类数组用来存储书籍,拟定义四本书
    Book[] book = {new Book("论语",1),new Book("高数",2),new Book("语文",3),new Book("法语",4)};
    //提前定义一个用户选择的选项方式,默认为0
    int chose = 0;
    //定义书名,后期存储书名,默认为空
    String bookName = null;
    //定义书序号。后期存储书序号
    int bookNum;
    //提前定义一个输入流
    Scanner sc = null;
    //定义是否有用户想要的书,默认false
    boolean ifHaveBook = false;
    //体钱定义一本书Book,用于存储用户选择的书
    Book needBook = null;
    //当用户输入有误时,弹出提示并重新开始输入选择书籍
    while(chose !=1&&chose!=2){
        System.out.println("输入书名请按1,输入序号请按2");
        try {
        //得到用户输入的值,并存在体钱准备的chose参数中
        sc = new Scanner(System.in);
        chose = sc.nextInt();
        //判断用户选择的找书方式,如果输入的数字不是1或者2,抛出自建错误类ErrorNumException
        if(chose !=1&&chose !=2){
            throw new ErrorNumException();
        }
        //如果用户选择的是1,输入名称来找书
          if(chose==1){
              System.out.println("请输入你想要的的书籍名称");
              //得到用户的输入值,并赋值给提前准备的bookName中
              sc = new Scanner(System.in);
              bookName = sc.nextLine();
              //遍历书的数组,判断是否有用户输入的书名的书
              for(Book k:book){
              //如果找到对应书名的书,将ifHaveBooK赋值为true,代表有书,找到的书存在needBook中
                  if(k.getName().equals(bookName)){
                  ifHaveBook = true;
                  needBook = k;
                  }
              }
       //根据ifHaveBook的结果判断是否找到书,找到则输出找到的书的信息,没有则抛出自定义异常NoBookNameException
              if(ifHaveBook){
                System.out.println("找到您要的书籍:"+needBook.getName());
              }else{
              //chose清零是为了如果没有找到书,让循环继续运行,重新开始找书
                chose = 0;
                throw new NoBookNameException();
              }
            //如果用户选择的是2,输入序号来找书
          }else{
              System.out.println("请输入你想要的的书籍序号");
              //得到用户输入的序号并存入bookNum中
              sc = new Scanner(System.in);
              bookNum = sc.nextInt();
              //遍历书数组,判断是否有用户输入的书序号的书
              for(Book k:book){
              //如果找到对应书名的书,将ifHaveBooK赋值为true,代表有书,找到的书存在needBook中
                if(k.getNum()==bookNum){
                    ifHaveBook = true;
                    needBook = k;
                }
              }
       //根据ifHaveBook的结果判断是否找到书,找到则输出找到的书的信息,没有则抛出自定义异常NoBookNumException
                if(ifHaveBook){
                    System.out.println("找到您要的书籍:"+needBook.getName());
                }else{
                //chose清零是为了如果没有找到书,让循环继续运行,重新开始找书
                    chose = 0;
                    throw new NoBookNumException();
                }
          }
        } catch (InputMismatchException e) {
            System.out.println("请按照提示输入合法数字");
        } catch (ErrorNumException e) {
            System.out.println("输入错误,请输入1或者2");
        } catch (NoBookNameException e) {
                System.out.println("根据您输入的书名,未找到相应的书籍");
        } catch (NoBookNumException e) {
                System.out.println("根据您输入的序号,未找到相应的书籍");
        }
     }
  }
}


正在回答

1 回答

?玛尼玛尼

0 回复 有任何疑惑可以回复我~
package com.example.java_basics.one.dec.twentyfour;

import lombok.Data;

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

/**
 * @Description 模拟借书系统(异常练习)
 * @Author lcb
 * @Date 2019/12/24
 */
@Data
public class Practice {
    Scanner scanner = null;
    String[] str = {"图书1","图书2","图书3"};

    public static void main(String[] args) {
        Practice practice = new Practice();
        practice.test1();
    }

    public void test1() {
        System.out.println("输入命令:1、按照序号查找 2、按照书名查找");
        try {
            scanner = new Scanner(System.in);
            int input = scanner.nextInt();
            test2(input);
        }catch (InputMismatchException e) {
            System.out.println("输入错误!请根据提示输入数字命令");
        }catch (PracticeException e) {
            System.out.println(e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            test1();
        }
    }

    public void test2(int input) {
            scanner = new Scanner(System.in);
        if (input == 1) {
            System.out.println("请输入序号:");
            int i1 = scanner.nextInt();
            if (i1 <= 0 || i1 > str.length) {
                throw new PracticeException("图书不存在");
            }else{
                System.out.println("book:"+str[(i1-1)]);
            }
        }else if (input == 2) {
            System.out.println("请输入书名:");
            String i2 = scanner.next();
            String book = "";
            for (String s : str) {
                if (s.equals(i2)) {
                    book = s;
                    System.out.println("book:"+book);
                }
            }
            if ("".equals(book)) {
                throw new PracticeException("图书不存在");
            }
        }else{
            throw new PracticeException("请输入大于0小于3的数字");
        }
    }
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

按照需求写得,注解写得很详细,需求没提的功能也没写,Book类和自定义的异常类没放上来,供参考

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信