模拟借书系统(java 异常练习)

警告
本文最后更新于 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;
	}

}

大致运行效果

Buy me a coffee~
支付宝
微信
0%