警告
本文最后更新于 2023-07-07,文中内容可能已过时。
实现代码
这里的异常主要是InputMismatchException
, 可以直接捕获该异常,我直接捕获了父类异常。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
| package cn.lruihao.Exception;
import java.util.Scanner;
/**
* @author 李瑞豪
* 借书系统(异常练习)
*/
public class ExceptionDemo {
private final Book[] books = {
new Book("数据结构"),
new Book("Java"),
new Book("php"),
new Book("c")
};
public static void main(String[] args) {
System.out.println("欢迎来到借书系统!");
ExceptionDemo jieshu= new ExceptionDemo();
jieshu.menu();
}
public void menu() {
System.out.println("输入命令:1. 书名查找;\t2. 序号查找;");
//初始化并捕获用户输入
Scanner sc = new Scanner(System.in);
// 捕获异常
try {
int id =sc.nextInt();
if(id==1||id==2) {
inquire(id);
}else {
System.out.println("输入错误!请根据提示输入~~");//输入非 1,2 的数字情况
menu();
}
}catch (Exception e) {//输入字符为非数字
e.printStackTrace();
System.out.println("输入错误,请输入数字命令~~");
menu();
}finally{
sc.close();
}
}
private void inquire(int id) {
Scanner sc = new Scanner(System.in);
if(id==1) {
System.out.println("请输入要查找的书名!");
String name=sc.nextLine();
int num=FindName(name);
if(num==0?false:true) {//验证书名是否存在 存在则打印
System.out.println("book:"+name+"\t 序号:"+num);
//menu();//回到访问起点 也可以去掉终止程序
}else{
System.out.println("图书不存在");
menu();
}
sc.close();
}else if(id == 2) {
System.out.println("请输入您要查找的序号:");
int id2=sc.nextInt();
FindNum(id2);
sc.close();
}
}
private void FindNum(int num) {
try {
if(num>=0&&num<books.length) {
System.out.println(books[num].getName());
//menu();//回到访问起点 也可以去掉终止程序
}else{
System.out.println("图书不存在");
menu();
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("输入有误!~~");
}
}
private int FindName(String name) {
int num=0;
for(Book i:books) {
String name1=i.getName();
if(name1.equals(name)) {
return num;
}
num++;
}
return 0;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| package cn.lruihao.Exception;
public class Book {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Book(String name) {
this.name = name;
}
}
|
大致运行效果