我们先看一下系统的 要求:
/*
* 1.定义字符串数组保存图书信息
* 2.提示用户输入,分别按“书名”和“图书序号”查找图书
* 3.根据输入信息进行适当的异常处理
* a.如果输入类型错误,抛出“错误命令异常”,并提示重新输入;
* b.如果书名不存在,抛出“图书不存在异常”,并提示重新输入;
* c.如果图书序号超过字符串数组范围,抛出“图书不存在”异常,并提示重新输入。
*/
根据要求,显然我们可以把输入命令、按书名查找书名、按序号查找图书作为三个独立的方法写出。注释比较详细,简单易懂,适合初学者。
下面是具体实现方法:
1.输入命令方法
//输入命令方法
private static int inputCommand(){
int command=0;//接收控制台的输入
int goCatch=0;//判断catch块是否运行的标签
try{
Scanner input=new Scanner(System.in);
command=input.nextInt();
}catch(Exception e){//捕获非整型输入的异常,并输出"命令输入错误!请输入数字命令!"
System.out.println("命令输入错误!请输入数字命令!");
goCatch=1;
}
if(command!=1&&command!=2&&goCatch!=1){//如果输入的是整数,但不是1或2
System.out.println("命令输入错误!请输入数字命令:1或2");
}
return command;
}
2.按书名查找图书
//按书名查找图书
private static void getBookByName(String[] books){
System.out.println("请输入图书名称:");
Scanner input=new Scanner(System.in);
String bookName=input.next(); //接收输入的书名
boolean notExist=true;
for(int i=0;i<books.length;i++){//遍历查找是否有相匹配的图书
if(books[i].equals(bookName)){
System.out.println("已为您找到匹配图书:"+books[i]);
notExist=false;
}
}
if(notExist==true){//没有相匹配的图书,则提示"图书不存在!",并执行下一次循环
System.out.println("图书不存在!");
}
}
3.按序号查找图书
//按序号查找图书
private static void getBookByNum(String[] books){
boolean isException=false;//是否发生异常的标签
do{
System.out.println("请输入图书序号:");
try{
Scanner input=new Scanner(System.in);
int bookNum=input.nextInt();
System.out.println("已为您找到匹配图书:"+books[bookNum-1]);//输入无误,则输出相匹配的图书
isException=false;
}catch(ArrayIndexOutOfBoundsException e){//捕获数组下标越界异常,并提示"图书不存在!",请用户再次输入
System.out.println("图书不存在!");
isException=true;
}catch(Exception e){//捕获命令输入错误异常,并提示"输入命令错误!请输入数字命令!",请用户再次输入
System.out.println("输入命令错误!请输入数字命令!");
isException=true;
}
}while(isException);
}
4.main函数
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] books={"高数","数据结构","java入门","Thinking in Java","JavaScript"};
while(true){
System.out.println("请输入数字命令:1-按照书名查找图书;2-按照序号查找图书");
int command=inputCommand();
if(command==1){
getBookByName(books);
}
if(command==2){
getBookByNum(books);
}
}
}
5.运行结果:
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
a
命令输入错误!请输入数字命令!
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
3
命令输入错误!请输入数字命令:1或2
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
1
请输入图书名称:
读者
图书不存在!
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
1
请输入图书名称:
高数
已为您找到匹配图书:高数
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
2
请输入图书序号:
赛事
输入命令错误!请输入数字命令!
请输入图书序号:
222
图书不存在!
请输入图书序号:
1
已为您找到匹配图书:高数
请输入数字命令:1-按照书名查找图书;2-按照序号查找图书
热门评论
不过不完整呢 要是在用书名查找的时候输入数字的话 程序应该要提示 输入类型有误 希望加上这一段更好些
好厉害啊 同样是初学者的话 真是分分钟让我怀疑人生
想问下,main方法中,为什么要用while(true),这里的true是对什么东西进行判断?