实现的图书借阅系统要处理用户输入的非法参数,并引导用户正确使用

测试结果:

主要目的就是练习异常处理中的Exception类的使用

使用的相关语法

1 try{
2 //可能产生异常的代码块
3 }catch(Exception e){
4 //处理异常的代码块
5 }finally{//可以根据需要选择
6 //最终执行的代码块
7 }

实现过程:

创建BorrowBook类

import java.util.InputMismatchException;
import java.util.Scanner;
public class BorrowBook {Scanner scn = new Scanner(System.in);
}

定义三种异常类:输入的编号没有对应图书的异常、输入的书名没有对应的图书的异常、其他正常异常

private static class commanException extends Exception{private commanException() {}
}
private static class bookNumException extends Exception{private bookNumException() {}
}
private static class bookNameException extends Exception{private bookNameException() {}
}

创建抛出异常方法,并抛出三种异常

private void commanExc() throws commanException{throw new commanException();
}
private void bookNumExc() throws bookNumException{throw new bookNumException();
}
private void bookNameExc() throws bookNameException{throw new bookNameException();
}

创建用于存储图书的Box的方法(以两类书为例)

private static String[] bookBox() {String[] bookBox = new String[] {"高数","线性代数"};return bookBox;
}

创建借书入口方法

private static void borrowBook() throws Exception{System.out.println("输入命令:1-根据名称查找图书;2-根据序号查找图书");try {int inputNum = new BorrowBook().scn.nextInt();try {if(inputNum == 0) {borrowBkByName(bookBox());}else if(inputNum == 1){borrowBkByNum(bookBox());}else {new BorrowBook().commanExc();}}catch(Exception e){System.out.println("命令输入错误,请根据提示输入数字命令!");borrowBook();}    }catch(InputMismatchException eInput) {System.out.println("命令输入错误,请根据提示输入数字命令!");borrowBook();}
}

创建依据书名借书的方法

private static void borrowBkByName(String[] books) throws Exception{System.out.println("输入图书名称:");String bookName = new BorrowBook().scn.next();try {switch(bookName) {case "高数":System.out.println("book:" + bookName);break;case "线性代数":System.out.println("book:" + bookName);break;default:new BorrowBook().bookNameExc();}}catch(Exception e) {System.out.println("图书不存在!");borrowBkByName(books);}
}

创建依据图书序号借书的方法

private static void borrowBkByNum(String[] books) throws Exception{System.out.println("输入图书序号:");try {int bookNum = new BorrowBook().scn.nextInt();try {switch(bookNum) {case 1:System.out.println("book:" + books[bookNum]);break;case 2:System.out.println("book:" + books[bookNum]);break;default:new BorrowBook().bookNumExc();}}catch(Exception e) {System.out.println("图书不存在!");borrowBkByNum(books);}    }catch(InputMismatchException e) {System.out.println("命令输入错误,请根据提示输入数字命令!");borrowBkByNum(books);        }
}

用于初始化的main方法

public static void main(String[] args) throws Exception{borrowBook();new BorrowBook().scn.close();
}

转载于:https://www.cnblogs.com/xinglichao/p/8886313.html

java学习之借书系统相关推荐

  1. book类 借书 java_java学习之借书系统

    实现的图书借阅系统要处理用户输入的非法参数,并引导用户正确使用 测试结果: 主要目的就是练习异常处理中的Exception类的使用 使用的相关语法 1 try{2 //可能产生异常的代码块 3 }ca ...

  2. 用java统计任一书名次数_Java入门第三季 借书系统源代码 加入了限制重输次数 欢迎指教交流...

    昨天刷完了关于异常的视频,感觉讲的太跳跃了,让我这个新手有点不适应,摸索了很久才完成了这个借书系统,擅自命名为达达借书系统,我还没习惯写备注,如果有看不懂的地方,欢迎大家留言指教. 建立 JieShu ...

  3. java成绩录入系统健壮性_Java第三季第一章异常,作业,借书系统。能通过,但是健壮性和可读性不强...

    一个借书系统,主要是使用异常来对借书时的情况进行把控. 基本可以跑.写的还是有点乱. 不足的地方还是很多的,希望大家指教,代码如下: package com.Library; import java. ...

  4. book类 借书 java_模拟借书系统(Java入门第三季第一章练习)

    程序流程图我就不放上来了,慕友们将就着看看吧,注释还算清晰. 这段代码是Java入门第三季异常与异常处理这一章的练习题, 代码尚有不足,请多多指教. /** * 功能:模拟借书系统 * 要求: * 1 ...

  5. 模拟借书系统-慕课网

    import java.util.InputMismatchException; import java.util.Scanner; /**  * 借书书系统  * @author  */ publi ...

  6. Django 图书借书系统

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Django是什么? 二.django安装 1.安装 2.需要的pip list 安装 三.django 建立图书 ...

  7. 实战小项目之借书系统

    项目简介 基于Qt做了一个用户管理和借书系统,主要是为了练手,学了mysql而不是白学,通过这个小软件,对数据库增删改查操作更为熟悉,对于操作失败时,能通过一些返回信息判断错误原因,不废话了,下面是这 ...

  8. 惊了,Alibaba内部“Java学习宝典”,居然系统到P7 ,学到就是赚到

    小编把Java工程师复习分为如下几个方向: Java基础(重点) : JVM原理,排序算法,Java 集合及工具类,多线程及 并发包,设计模式(23种): 存储相关:MySQL.Redis.Mongo ...

  9. java异常处借接错书_Java入门第三季-异常-图书馆借书系统

    参考大神的代码,实现循环查询读书, 名称输入异常类定义 NameException.java package com.imooc; /** * 书名异常类 * @author Majinglian * ...

最新文章

  1. Python3--有道音频下载
  2. CentOs7中安装sonarQube服务系列------1.CentOS7中Docker的安装
  3. 互联网产品研发的典型流程
  4. HTTP Cookie
  5. powderdesinger显示中英文表名
  6. python编程狮app题库_‎Python编程狮-零基础学Python App Storessa
  7. json在线格式化【推荐】
  8. .NET伪静态使用以及和纯静态的区别
  9. docker 中 NGINX+PHP+MYSQL+REDIS+Elasticsearch 环境搭建 (linux系统)
  10. PMBOK--项目整合管理
  11. nginx服务无法停止(Windows)
  12. 【新书速递】计算机系统解密:从理解计算机到编写高效代码
  13. 为什么Android项目mainactivity中有一个变量R_教我兄弟学Android逆向12 编写xpose模块...
  14. cordic ip核 vivado_Xilinx Vivado Cordic 核的使用
  15. 网络设备设置/取消console口登陆单独密码
  16. Angular入门到精通系列教程(1) - Angular,Vue,React 选型
  17. Oil Deposits HDU - 1241 并查集思想 + bfs搜索
  18. python如何在手机运行内存_Python中对象的内存使用(一)
  19. windows10 杀掉一个端口
  20. Linux指令_杨小明

热门文章

  1. SAP零售行业解决方案初阶 3 - WB01 创建Site Master
  2. 张亚勤、张宏江:人工智能的未来是什么?
  3. 中文版GPT-3来了?智源、清华发布清源 CPM——以中文为核心的大规模预训练模型
  4. 机器学习为NASA贡献了什么?
  5. SAP HU 序列号里的Sales Order号码不一致导致PGI失败问题之对策
  6. Gartner:2019十大战略技术趋势
  7. SAP HUM 如何将2个HU合并并成一个?
  8. 7年前轰动全球的Science论文,被发现可能搞错了
  9. 万字长文!DeepMind科学家总结2021年的15个高能研究
  10. 人为什么要睡觉?科学家给出进一步答案