package com.test.book;
import java.util.InputMismatchException;
import java.util.Scanner;
public class BookTest {
String[] books = { "数据结构", "高数", "英语", "语文" };
public static void main(String[] args) {
BookTest bookTest = new BookTest();
// 获取正确命令(1或2)
try {
boolean isTrue = true;
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
Scanner sc = new Scanner(System.in);
int one = sc.nextInt(); // 命令
outer: while (one != 1 || one != 2) { // 当不为1或2时,重新输入
if (one == 1) {
// 当输入命令为1时
// System.out.println(one);
isTrue = bookTest.findByName(one);
if (!isTrue) {
one = 0;
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
continue outer;
}
// break;
} else if (one == 2) {
// 当输入命令为2时
// System.out.println(one);
isTrue = bookTest.findByNum(one);
if (!isTrue) {
one = 0;
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
continue outer;
}
// break;
} else {
one = sc.nextInt();
}
}
} catch (InputMismatchException e) {
e.printStackTrace();
}
}
// 按照名称查找图书,命令为1
public boolean findByName(int order) {
boolean isExist = false;
System.out.println("请输入图书名称:");
try {
// 接收输入数据(数据为输入的图书名称)
Scanner sc = new Scanner(System.in);
String two = sc.nextLine();
// 判断字符串数组中是否存在该图书名称
int x = 0;
for (int i = 0; i < books.length; i++) {
if (books[i].equals(two)) {
isExist = true;
x = i;
}
}
if (!isExist) {
System.out.println("图书不存在!");
isExist = false;
} else {
// 打印出图书名称
System.out.println("book:" + books[x]);
}
} catch (InputMismatchException e) {
e.printStackTrace();
}
return isExist;
}
// 按照序号查找图书,命令为2
public boolean findByNum(int order) {
boolean isExist = false;
System.out.println("请输入图书序号:");
try {
// 接收输入数据(数据为输入的图书名称)
Scanner sc = new Scanner(System.in);
int three = sc.nextInt() - 1;
// 判断字符串数组中是否存在该图书编号
if (three < 0 || three >= books.length) {
System.out.println("图书编号不存在");
} else {
System.out.println("book:" + books[three]);
isExist = true;
}
} catch (InputMismatchException e) {
e.printStackTrace();
}
return isExist;
}
}
还有很多需要完善的地方,欢迎大家指点和交流
打开App,阅读手记
热门评论
你这代码好像死循环l
我的思考是,构建一个for循环,然后里面加try和catch,try里面用于获取用户输入的信息,然后执行判断后就break,当用户输入不规范时catch会捕捉到异常,然后输入提示信息,然后加个continue,直到用户输入正确才会跳出循环。
当isTrue为False时,给one赋值0,为什么要println?又没有对象接受,而且one为0直接退出循环