首先自定义了两个异常类:
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(;;)这种无条件的循环是避免不了的,有没有其他方式解决?(奇怪的问题。。。)
热门评论
请问一下,for(;;)和while(1)有什么区别,能不能用while(1)代替for