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 学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: ...
随机推荐
- 【转】电源芯片选型,容易忽略的“QC”
某公司自主研发的智能水表刚上市半年,随后此产品陆续接到用户投诉没电的情况,公司售后不得不花大量人力到用户现场更换电池,处理异常,导致公司损失惨重.但是该产品说明书中标称电池可以工作三年,为何半年左右电 ...
- Python 进程间的通信
#-*-coding:utf-8-*- '''python提供了多种进程间的通信方式,如:Queue,Pipe,Valie+Array等. Queue与Pipe的区别在于Pipe常用来在两个进程间通信 ...
- c++并发编程之互斥锁(mutex)的使用方法
1. 多个线程访问同一资源时,为了保证数据的一致性,最简单的方式就是使用 mutex(互斥锁). 引用 cppreference 的介绍: The mutex class is a synchroni ...
- windows服务写完之后怎么让它跑起来
当然你可以在命令框里面自己去手动的敲代码,也可以写一个.bat文件一劳永逸......这里我就介绍写.bat文件的方法 就是上图所示的三个东东啦,有了这三个东东,把他们拖到你windows服务的deb ...
- 在线Python学习网站
目前我们使用的Python集成环境是Anaconda3,然后使用Jupyter Notebook和Spyder两个开发环境 Goole推出了在线的开发环境,在线网站: https://colab.re ...
- scala 基础知识总结
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...
- 格式化 SQL 来提高效率
本文由 伯乐在线 - cucr 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:msiman.ga.欢迎加入翻译小组. 背景 已格式化的SQL并不比未格式化SQL运行地更快.数据库可能真的不太在意你 ...
- ASP.NET实现二维码(QRCode)的创建和读取
一.项目引用QRCode的DLL文件(ThoughtWorks.QRCode.dll) 二.ASPX页面(两个jquery的js文件请自行去官网下载): [html] <html xm ...
- nmap - 网络扫描
NMap,Network Mapper 最早是Linux下的网络扫描和嗅探工具包 网络链接扫描; nmap -PT 192.168.1.1-111 # 先ping在扫描主机开放端口 nmap -O 1 ...
- Java 学习札记(一)JDK安装配置
Windows上配置JDK 1.下载windows版JDK 网址:http://www.oracle.com/technetwork/java/javase/archive-139210.html 2 ...