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

来源:互联网 发布:朋友陪你醉dj网络歌手 编辑:程序博客网 时间:2024/06/14 23:59

这里写图片描述

这里写图片描述

代码示例:

创建自定义异常类包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();    }}
原创粉丝点击