博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
book类 借书 java_模拟借书系统(Java入门第三季第一章练习)
阅读量:5010 次
发布时间:2019-06-12

本文共 4011 字,大约阅读时间需要 13 分钟。

程序流程图我就不放上来了,慕友们将就着看看吧,注释还算清晰。

这段代码是Java入门第三季异常与异常处理这一章的练习题,

代码尚有不足,请多多指教。

/**

* 功能:模拟借书系统

* 要求:

* 1.定义字符串数组保存图书信息

* 2.提示用户输入,分别按“书名”和“图书序号”查找图书

* 3.根据输入信息进行适当的异常处理:

* a) 如果输入类型错误,抛出“错误命令异常”,并提示重新输入

* b) 如果书名不存在,抛出“图书不存在异常”,并提示重新输入

* c) 如果图书序号超过字符串数组范围,抛出“图书不存在异常”,并提示重新输入

* @author zodas

*

*/

先看BorrowBook类

import java.util.Scanner;

public class BorrowBook{

static String[] books={"数据结构","高数","Java","Html"};//保存图书信息

static int flagCommand=0;//查询命令错误标志

static int flagNotexistName=0;//图书名称不存在标志

static int flagNotexistNum=0;//图书序号不存在标志

static BorrowBook bk=new BorrowBook();

static Scanner input=new Scanner(System.in);

/******************************main方法*********************************/

public static void main(String[] args) {

int num;//用于保存图书的序号

String name;//用于保存图书的名称

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");//提示用户输入

String way=input.next();

bk.choseWay(way);//选择查询方式

while(true){

if(flagCommand==0){//查询命令错误,则提示用户重新输入查询方式

way=input.next();

bk.choseWay(way);

continue;

}

if(flagCommand==1){//按图书名称查询

System.out.println("输入图书名称:");

name=input.next();

bk.ckName(name);

if(flagNotexistName==1){//如果图书不存在,则抛出图书不存在异常

NobookException nbe=new NobookException();

try{

nbe.noBook();

}catch(NobookException ne){

System.out.println(ne.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else{//图书已查到,询问用户是否要继续查询

System.out.println("是否要继续查询?1-是; 2-否");

if(input.nextInt()==1){//若要继续查询,则提示用户查询步骤

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else

break;//若不继续查询,则终止系统

}

}

if(flagCommand==2){//按图书序号查询

System.out.println("输入图书序号:");

num=input.nextInt();

bk.ckNum(num);

if(flagNotexistNum==1){//如果图书不存在,则抛出图书不存在异常

NobookException nbe=new NobookException();

try{

nbe.noBook();

}catch(NobookException ne){

System.out.println(ne.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else{//图书已查到,询问用户是否要继续查询

System.out.println("是否要继续查询?1-是; 2-否");

if(input.nextInt()==1){//若要继续查询,则提示用户查询步骤

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

way=input.next();

bk.choseWay(way);

continue;

}else

break;//若不继续查询,则终止系统

}

}

}

}

/*************选择查询方式,1按图书名称查询,2按序号查询,其它则抛出命令异常***********/

public void choseWay(String n){

if(n.equals("1")){

flagCommand=1;//按图书名称查询,则置查询命令标志位为1

}

else if(n.equals("2")){

flagCommand=2;//按图书序号查询,则置查询命令标志位为2

}else{

WrongCommandException wce=new WrongCommandException();

try{

wce.wrongCommand();

}catch(WrongCommandException wc){

System.out.println(wc.getMessage());

}

System.out.println("输入命令:1-按照书名查找图书; 2-按照序号查找图书");

flagCommand=0;//查询命令错位,则置查询命令标志位为0

}

}

/**********************检查此名称的书是否存在,存在则返回0,不存在则返回1***************/

public int ckName(String name){

for(int i=0;i

if(name.equals(books[i])){

System.out.println("book:"+books[i]+" 这本书是有的");

flagNotexistName=0;//图书名称存在,则置图书名称存在标志位为0

break;//一旦查到此图书名称则跳出for循环

}

else

flagNotexistName=1;//图书名称存在,则置图书名称存在标志位为1

}

return flagNotexistName;//返回图书名称标志位的值

}

/*******************检查此序号的书是否存在,存在则返回0,不存在则返回1******************/

public int ckNum(int num){

if(0<=num&&num

System.out.println("book:"+books[num]+" 这本书是有的");

flagNotexistNum=0;//图书序号存在,则置图书序号存在标志位为0

}

else

flagNotexistNum=1;//图书序号存在,则置图书序号存在标志位为1

return flagNotexistNum;//返回图书序号标志位的值

}

}

自定义异常--NobookException类

public class NobookException extends Exception {

/**

* 图书不存在异常

*/

private static final long serialVersionUID = 1L;//这行我也不知道什么意思,编译器自动生成的

public void noBook() throws NobookException{

throw new NobookException("图书不存在!");

}

public NobookException(){

}

public NobookException(String message){

super(message);

}

}

自定义异常--WrongCommandException类

public class WrongCommandException extends Exception {

/**

* 命令错误异常

*/

private static final long serialVersionUID = 1L;//这行我也不知道什么意思,编译器自动生成的

public void wrongCommand() throws WrongCommandException{

throw new WrongCommandException("命令输入错误!请根据提示输入数字命令!");

}

public WrongCommandException(){

}

public WrongCommandException(String message){

super(message);

}

}

转载地址:http://qlggp.baihongyu.com/

你可能感兴趣的文章
网络编程-socket并发-粘包问题
查看>>
python 中安装pandas
查看>>
Hibernate 的<generator class="native"></generator>的不同属性含义
查看>>
linux修改root账户的用户名所得的教训
查看>>
【LeetCode】Flatten Binary Tree to Linked List
查看>>
读后感-浮生六纪
查看>>
执行指定路径的程序文件
查看>>
Leetcode-950 Reveal Cards In Increasing Order(按递增顺序显示卡牌)
查看>>
[Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
查看>>
14款下载有用脚本的超酷网站
查看>>
LXC-Linux Containers介绍
查看>>
7.31实习培训日志-docker sql
查看>>
c#中使用servicestackredis操作redis
查看>>
ios app 真机crash报告分析
查看>>
CRC标准以及简记式
查看>>
SEO搜索引擎
查看>>
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>
一、Text To Speech
查看>>
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>