首页 > 开发 > JAVA > 正文

模拟借书系统练习(java)

2016-07-25 21:45:24  来源:慕课网
  首先自定义了两个异常类:
package lu.zhang;//定义新异常,数字错误异常 NumException,也就是系统最初需要通过1、2选择找书方式时输入了3或4等其他数字的情况public class NumException extends Exception { public NumException(){ }; public NumException(String message){ super(message); };}package lu.zhang;//定义新异常,书名不存在异常 NoBookException public class NoBookException extends Exception { public NoBookException(){ }; public NoBookException(String message){ super(message); };}package lu.zhang;import java.util.InputMismatchException;import java.util.Scanner;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub String[] book=new String[]{"海尔兄弟","熊出没","葫芦娃","西游记","哪吒传奇","数码宝贝","神奇宝贝","小黄书","小小黄书","科科","哈哈","嘿嘿","编不下去了","再见"}; int choice; Scanner input=new Scanner(System.in); for(;;){ for(;;){ try{ input=new Scanner(System.in);//System.in会一直等待输入,防止在没有输入的状态下一直循环 System.out.println("欢迎借书!"); System.out.println("请输入命令:1-按照名字查书;2-按照序号查书"); choice=input.nextInt(); if (choice!=1&&choice!=2) throw new NumException("数字不匹配"); else break; } catch(InputMismatchException e) { System.out.println("[请按提示输入命令]"); } catch(NumException e1) { System.out.println("[请按提示输入数字]"); } } if(choice==1){ input=new Scanner(System.in); System.out.println("请输入图书名称:"); try{ String str=input.next(); boolean flagOfExist=false; for(int i=0;i<book.length;i++){ if(book[i].equals(str)) { flagOfExist=true; break; } }//如果存在书库中存在一本书与输入名称相同,则可跳出循环 if(!flagOfExist) // throw new NoBookException("图书不存在!"); else System.out.println("找到book:"+str); } catch(NoBookException e) { System.out.println("图书不存在!"); continue; } } if(choice==2){ input=new Scanner(System.in); System.out.println("请输入图书序号:"); try{ int num=input.nextInt(); String str=book[num-1]; System.out.println("找到book:"+str); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("图书不存在!"); continue; } } } }}  控制台程序执行:
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
kkk
[请按提示输入命令]
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
6
[请按提示输入数字]
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
1
请输入图书名称:
小小黄书
找到book:小小黄书
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
1
请输入图书名称:
法尔
图书不存在!
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
2
请输入图书序号:
233333
图书不存在!
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
2
请输入图书序号:
7
找到book:神奇宝贝
欢迎借书!
请输入命令:1-按照名字查书;2-按照序号查书
  说实话,在这里用了for(;;)循环让我感觉很难受,可是去看了看其他慕友的程序,也都是用循环。小白想请教一下,是否在这一编程情境下,for(;;)这种无条件的循环是避免不了的,有没有其他方式解决?(奇怪的问题。。。)