作业的疑问
package sentBook;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
public class sentBook {
String[] book = new String[]{"你好,中国", "九型人格", "Java123", "面向对象编程", "美文如歌"};
Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
sentBook sent = new sentBook();
sent.welcome();
}
/*欢迎界面
*同时对输入进行校验
*/
public void welcome(){
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书;");
int select = 0;
try{
select = new Scanner(System.in).nextInt();
}catch(InputMismatchException e){
System.out.println("命令输入错误!请按照提示输入数字命令!");
this.welcome();
}
try{
if(select == 1 ){
this.sentName();
}else if(select == 2){
this.sentNum();
}else if(select == 0){
System.out.println("fuck!");
}
else{
throw new Exception();
}
}catch(Exception e){
System.out.println("请按照提示输入正确命令!");
this.welcome();
}
return;
}
/*
* 按名称查书
*/
public void sentName(){
System.out.println("输入图书名称:");
String name = scan.next();
String books = Arrays.toString(book);
if(books.indexOf(name) != -1){
System.out.println("book:" + name);
}else{
System.out.println("图书不存在!");
this.welcome();
}
}
/*
* 按序列号查书
*/
public void sentNum(){
System.out.println("输入图书序号:");
int num = scan.nextInt();
if(num <= book.length+1){
System.out.println("book:" + book[num - 1]);
}else{
System.out.println("图书不存在!");
this.welcome();
}
}
}代码如图所示,现在有一个问题,具体的输出如下:
输入命令:1-按照名称查找图书;2-按照序号查找图书;
a
命令输入错误!请按照提示输入数字命令!
输入命令:1-按照名称查找图书;2-按照序号查找图书;
1
输入图书名称:
九型人格
book:九型人格
fuck!
最开始是因为发现一个问题,如果第一次输入错误,那么在正确的输入以及查询结束后,会继续循环一次查询。利用断点调试发现,第一次输入错误并之后正确执行了一次查询后,会继续对输入的select值进行判断,而且是默认的0。如果把这个默认的select赋值去掉的话,程序会报错。
想请教一下,怎样才能在正确执行一次查询后直接结束程序,而不是继续对select值进行判断。