模拟借书系统

来源:互联网 发布:淘宝众筹的产品怎么样 编辑:程序博客网 时间:2024/06/05 15:43

要求如下:





主要是对异常try-catch-finally语句的一个深入理解过程

实现代码:

public class BookSystem {


public static void main(String[] args) {

Book[] bookStore={new Book("math",1),new Book("physical",2),new Book("biological",3)};
//String[][]  books=new String[][] {{"高数","1"},{"物理","2"},{"生物","3"}};数组存书的相关信息
BookSystem BS=new BookSystem();
Scanner input= new Scanner(System.in);
while(true) {
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
int i=0;
boolean flag0=true;

try {
i=input.nextInt();
}

catch(Exception e) {
System.out.println("输入命令错误!请根据提示输入数字命令!");
flag0=false;
}
if(i==1) {
System.out.println("输入图书的名称:");
String str=input.next();
System.out.println(str);
int k;
boolean flag=true;
try {
for( k=0;k<bookStore.length;k++) {
String s1=bookStore[k].getName();

if(s1.equals(str))
//if(books[k][1].equals(str))
{
System.out.println("book:"+str);
flag=false;
break;
}
}
if(flag) {
BS.exception1();
}
}catch(BookNoExistException e) {
System.out.println("图书不存在!");

}
}
else if(i==2) {
System.out.println("输入图书序号:");
int id=0;
boolean flag2=true;
try {
id=input.nextInt();
}
catch(Exception e) {
System.out.println("输入命令错误!请根据提示输入数字命令!");
flag2=false;
}
int k;
try{
for( k=0;k<bookStore.length;k++) {
//if(books[k][0].equals(str))
if((id-1)==k) {
System.out.println("book:"+bookStore[id-1].getName());
flag2=false;
break;
}
}
if(flag2) {
BS.exception1();
}
}
catch(BookNoExistException e) {
System.out.println("图书不存在!");
}
}
else {
if(flag0) {
try{
BS.exception2();
}
catch( InputMismatchException e) {
System.out.println("输入命令错误!请根据提示输入数字命令!");
}
}
}
if(input.nextLine().equals("exist"))
break;
}
input.close();
}
public void exception1() throws BookNoExistException{
throw new BookNoExistException("图书不存在");
}
public void exception2() throws InputMismatchException{
throw new InputMismatchException("输入命令错误!请根据提示输入数字命令");
}




}


总结:

本次代码还有优化的地方,同时可以采用switch语句来实现;

遇到的重大问题:输入中文时,显示的是中文拼音加中文,可能是字符编码问题;但是还未解决。。。。。



原创粉丝点击