java学习之借书系统
实现的图书借阅系统要处理用户输入的非法参数,并引导用户正确使用
测试结果:


主要目的就是练习异常处理中的Exception类的使用
使用的相关语法
try{
//可能产生异常的代码块
}catch(Exception e){
//处理异常的代码块
}finally{//可以根据需要选择
//最终执行的代码块
}
实现过程:
创建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();
}
java学习之借书系统的更多相关文章
- java学习之租车系统
背景:有三种类型的车供给用户来租用 要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...
- Java 学习(14):接口 & 包(设置 CLASSPATH 系统变量)
Java 接口(英文:Interface) 定义:在JAVA编程语言中,接口是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明. 一个类通过继承接口的方式,从而来继承接口的抽象方 ...
- 20145230《java学习笔记》第七周学习总结
20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- Java学习之路:不走弯路,就是捷径
1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...
- Java 学习
effective+java第三版 2016-09-23 15:25 effective+java第三版 相关问答 EffectiveJava第28条中关于泛型的一个疑问? @又名耶稣谢邀 一.先说说 ...
- 转:Java学习路线图
作者: nuanyangyang 标 题: Java学习路线图(整理中,欢迎纠正) 发信站: 北邮人论坛 (Mon Aug 11 19:28:16 2014), 站内 [以下肯定是不完整的列表, ...
- Java[1] Java学习书籍汇总(转)
原文:http://www.cnblogs.com/hyl8218/p/5067000.html 学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: ...
随机推荐
- c++桥接模式
可以简记为pointer to implement:”指向实现的指针”. [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化.考虑装操作系统,有多种配置的计算机,同样也有多款操作系 ...
- 20145215卢肖明《网络对抗》逆向及Bof基础
20145215卢肖明<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...
- P1858 多人背包
P1858 多人背包 题目描述 求01背包前k优解的价值和 要求装满 调试日志: 初始化没有赋给 dp[0] Solution 首先补充个知识点啊, 要求装满的背包需要初始赋 \(-inf\), 边界 ...
- Java基础-时间复杂度计算方式
Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...
- 解决linux mysql命令 bash: mysql: command not found 的方法
错误: root@DB-02 ~]# mysql -u root-bash: mysql: command not found 原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这 ...
- Spring RedisTemplate操作-xml配置(1)
网上没能找到全的spring redistemplate操作例子,故特意化了点时间做了接口调用练习,基本包含了所有redistemplate方法. 该操作例子是个系列,该片为spring xml配置, ...
- Sublime Text 2 绿化与汉化 [Windows篇]
其实 ST3 已经出了很久了,可是我这个人恋旧,一直钟爱 ST2,所以就选择她了.最近我的 ST2 越来越卡,甚至有时候输入都会延迟1秒,所以打算自己搞个绿化版. 打开 Sublime Text 官网 ...
- ie6下的line-height属性
line-height这个属性是被ie6所支持的. 当是当一个父级元素内的子元素,包含了文字,且文字和img,input,label,span这些内联元素连接在一起的时候,你对父级元素设置line-h ...
- 五行代码终极完美解决从IE6到Chrome所有浏览器的position:fixed;以及闪动问题
这个方法其实已经使用很久了,之前主要在嵌入式WebQQ等产品中用过,现在拿出来分享一下吧,是目前最简洁的方式来实现ie6的position:fixed; 失效bug,以及的其他方法的闪动问题,CSS代 ...
- JavaScript继承详解(五)
在本章中,我们将分析John Resig关于JavaScript继承的一个实现 - Simple JavaScript Inheritance. John Resig作为jQuery的创始人而声名在外 ...