/*
- 注: xxInstruction,NobooksHere 异常在该程序外定义了
- 注: 在输入的时候得手动调整光标的位置,不知道该如何自动化,头疼。
- 该程序执行时候只有完整正确一次才会执行完毕,一直错误则一直执行
- 符合老师要求
- 没有尝试运用do-while语句,导致结构很别扭。
- 序号方面的指令错误直接统一为“错误的命令”(使用了正则表达式)
-
*/
package lib系统初;
import java.util.Scanner;
public class Lib {
String book[]={"高数","线代","数据结构","系统","组成原理"};
public static void main(String[] args) {
rungogo();
System.out.println("程序执行完毕");
}
public static void rungogo(){
Lib KK=new Lib();
String A=KK.InputInstrNumber();//输入命令序号
switch(A){
case "1":
System.out.println("输入图书名称");
KK.NameCheck();
break;
case "2":
System.out.println("输入图书序号");
KK.NumCheck();
break;
}
}
public String InputInstrNumber(){
String check="[12]";
System.out.println("输入命令:1.按书名查找;2.按序号查找");
Scanner scanner = new Scanner(System.in);
String input;
input=scanner.next();
try {
if(!input.matches(check)){
System.out.println("错误的命令");
throw new xxInstruction();
}} catch (xxInstruction e) { // TODO 自动生成的 catch 块 InputInstrNumber(); } return input; }//输入命令序号并检查的方法
public void NameCheck(){
try {
Scanner scanner = new Scanner(System.in);
String input;
input=scanner.next();
int a,i;
//// for(int i=0;i<book.length&&input!=book[i];i++){//String比较不能简单的用==来比较
// for(i=0;i<=book.length&&input.compareTo(book[i])!=0;i++){
// if(i==book.length){
// System.out.println("图书不存在");
// throw new NobooksHere();
// }//if
// }//for
// System.out.println("book:"+book[i]);
for(i=0,a=0;i<book.length;){
if(input.compareTo(book[i])!=0){
a=i;
i++;
}
else
break;
}//if
if(i==book.length){
System.out.println("图书不存在");
throw new NobooksHere();
}
else
System.out.println("book"+a+":"+book[a]);
} catch (NobooksHere e) {
rungogo();//这种处理方法导致只要发生错误,程序就不会停止,直到正确一次为止
}
}//输入图书名字进行检查的方法public void NumCheck(){
try {
String check="\D";
Scanner scanner = new Scanner(System.in);
String input;
input=scanner.next();
if(input.matches(check)){
System.out.println("命令输入错误,请输入数字命令");
throw new xxInstruction();
}
else{
int number=Integer.parseInt(input);//强制类型转换,把输入的String类型转化成int类型
if(number<0number>book.length){
System.out.println("图书不存在");
throw new NobooksHere();
}
else
System.out.println("book:"+book[number-1]);
}
} catch (xxInstruction e) {
NumCheck();
}
catch (NobooksHere e) {
rungogo();//这种处理方法导致只要发生错误,程序就不会停止,直到正确一次为止
}}
}