java自学笔记9:异常练习(模拟借书系统)

这里写图片描述

这里写图片描述

代码示例:

创建自定义异常类包customException,创建三种异常类BadCommandException,IdException,NameException

package customException;

public class BadCommandException extends Exception{
  public BadCommandException(){

  }
}
package customException;

public class IdException extends Exception {
  public IdException(){

  }
}
package customException;

public class NameException extends Exception {
  public NameException(){

  }
}

创建BookList,SearchBook类

package com.vihsuo.www;

import java.util.Scanner;//导入输入包
import java.util.Arrays;
import customException.*;//导入自定义异常包
import java.util.InputMismatchException; //导入输入不匹配异常  

public class BookList {

//  BookList bookList = new BookList();
    int isTure = 0;// 初始化isTure值为0,只有输入存在的书名与序号,isTure值才会变为1

    public void Exc() throws BadCommandException {
        throw new BadCommandException();// 抛出错误命令异常
    }

    public void Exc2() throws NameException {
        throw new NameException();// 抛出图书名称不存在异常
    }

    public void Exc3() throws IdException {
        throw new IdException();// 抛出图书Id不存在异常
    }

    String[] book = { "1java从放弃到放弃", "2三体", "3大泼猴", "4七宗罪", "5三国如花传" };
    private Scanner selectMode;
    private Scanner bookNameInput;
    private Scanner seek;

    @Override
    public String toString() {
        return Arrays.toString(book);
    }

    public void showBookList() {
        System.out.println("当前图书目录:" + this.toString());

    }

    public int selectFromBookId(int bookId) {
        String bookName = book[bookId];
        System.out.println("书名:" + bookName + "\n恭喜您,借阅成功");
        return bookId;
    }

    public void showUser() {
        System.out.println("欢迎使用租书系统");
        this.showBookList();
        System.out.println("请选择您要查找的方式:1按照名称查找图书;2按照序号查找图书");
        selectMode = new Scanner(System.in);

        try {
            int mode = selectMode.nextInt(); // 用户输入的命令
            if (mode == 1) {
                chooseBookName();
            }else if(mode == 2){
                chooseBookId();
            }
            try {
                if(mode != 1 && mode != 2){ //若输入既不为1也不为2  
                    Exc(); //调用mode,抛出BadCommandException异常                
  /*|*/         }  
            } catch (BadCommandException e) {
                // TODO: handle exception
                 System.out.println("命令输入错误!请根据提示输入数字命令!");  
                 showUser(); //进行递归  
            }
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("命令输入错误!请根据提示输入数字命令!");        
            showUser();//进行递归,重新输入 
        }

    }

    public void chooseBookName() throws BadCommandException {
        System.out.println("请输入图书名称:");
        bookNameInput = new Scanner(System.in);
        String bookName = bookNameInput.next();// 输入图书名称

        try {
            if (Name(bookName) == 0) {// 如果书名不存在
                Exc2();// 调用Exc2方法,抛出NameException异常
            }
        } catch (NameException e) {
            // TODO: handle exception
            System.out.println("图书不存在!");
            showUser(); // 调用showUser方法,重新开始 也可进行递归,重新输入图书名称
        }
    }

    public void chooseBookId() throws BadCommandException { // 定义sacnner2类来用于输入图书序号进行处理
        System.out.println("请输入图书序号:");
        seek = new Scanner(System.in);

        try {
            int xuhao = seek.nextInt(); // 输入图书序号
            if (Xuhao(xuhao) == 0) { // 如果序号不存在
                Exc3();// 调用Exc3,抛出IdException异常
            }
        } catch (IdException e) { // 捕捉XuHaoException异常
            System.out.println("图书不存在!");
            showUser(); // 调用showUser,重新开始 也可进行递归,重新输入图书序号
        } catch (InputMismatchException e) { // 捕获输入不匹配异常(即不为整数)
            System.out.println("你应该输入整数!");
            chooseBookId();// 递归
        }

    }

    public int Name(String name) {
        switch (name) {
        case "java从放弃到放弃":
            System.out.println("书名:java从放弃到放弃");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case "三体":
            System.out.println("书名:三体");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case "大泼猴":
            System.out.println("书名:大泼猴");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case "七宗罪":
            System.out.println("书名:七宗罪");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;

        case "三国如花传":
            System.out.println("书名:三国如花传");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        }

        return isTure;
    }

    public int Xuhao(int xuhao) {
        switch (xuhao) {
        case 1:
            System.out.println("book:java从放弃到放弃");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case 2:
            System.out.println("book:三体");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case 3:
            System.out.println("book:大泼猴");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        case 4:
            System.out.println("书名:七宗罪");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;

        case 5:
            System.out.println("书名:三国如花传");
            System.out.println("恭喜您,借书成功!");
            isTure = 1;
            break;
        }
        return isTure;
    }
}
package com.vihsuo.www;

public class SearchBook {

    //主函数
    public static void main(String[] args){
        BookList bookList = new BookList();
        bookList.showUser();
    }

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值