package library; import java.util.Scanner;//扫描 public class Library { public void library(){ System.out.println("输入命令:1。按照名称查找图书;2.按照序号查找图书");//打印输出 try{//try{}catch(){}语句块的应用 Scanner input=new Scanner(System.in); int a=input.nextInt(); if(a==1){ library1();//输入1,调用library1方法 }else if(a==2){ library2();//输入2调用library2方法 }else { System.out.println("命令输入错误,请根据提示输入数字命令!(1或2)"); library();//输入其它整数则提示重新输入 } }catch(Exception e){//异常捕获 System.out.println("命令输入错误,请根据提示输入数字命令!"); library();//异常处理,回滚重新输入 } } public void library1(){ System.out.println("输入图书名称:"); try{ Scanner input=new Scanner(System.in); String b=input.next();//扫描 输入字符串(输入图书名称) for(int i=0;;i++){//用for循环遍历 搜索系统中是否有要借的图书 if((Books.books[i].name).equals(b)){ System.out.println("book:"+b); break;//有则结束循环,没有则抛出一个异常 } } }catch(Exception e){ System.out.println("图书不存在!");//异常处理方式 重新输入图书 library1(); } } public void library2(){//参照library1 System.out.println("输入图书序号:"); try{ Scanner input=new Scanner(System.in); int b=input.nextInt(); for(int i=0;;i++){ if(Books.books[i].num==b){ System.out.println("book:"+Books.books[i].name); break; } } }catch(Exception e){ System.out.println("图书不存在!"); library2(); } } }
package library; public class Books {//数据模型 int num; String name; public Books(int num,String name){//构造函数 存储书本序号,及名字 this.num=num; this.name=name; } public static Books[]books={new Books(1,"数据结构"),new Books(2,"高数"),new Books(3,"线性代数") };//数组信息 }
package library;//测试类 public class Initail { /** * @param args */ public static void main(String[] args){ // TODO Auto-generated method stub System.out.println("欢迎登录借书系统"); Library input=new Library();//建立对象 input.library(); } }
int num;
String name;
这个地方最好用private进行封装调用时是用get的方法;其他我觉得挺好的
int num;
String name;
这个地方最好用private进行封装,对于这样,private只是限于在本类中使用,那Library类中岂不是不能 用他的
信息?
我刚才运行了一下代码,发现没有必要回滚啊
你好,参考打印出了,查找原因,目前是同时定义了 两个类型的变量b ,分别是String ,int ,尝试将变量变换两者不能相同吧,问题解决。小白请教。
我运行了代码 之后,发现,没有运行catch()块中的代码
对于Scanner input.楼主要记得调用input.close()关闭会比较好
问下 输入的书名不匹配 为什么会抛出一个异常
想问问能写出这样的代码,需要怎么学习,自己也看了问题但是仍然没有思路和想法,只是知道最基本的一些简单知识,求指教。
问题:在Books类里定义的静态数组books,在类Library类里不能直接调用吧,我尝试了下,不对啊,应该在Liberay里调用一下Books的构造函数吧!
根据书名找不到书不会提示错误。
这样递归算不算“异常链”呢?
整体来说不错,提个小建议:或许可以在类与类之间建立一些关系(如:继承),使得他们之间的耦合更加紧密,从而达成一些效率上的提升
呃。。。原来木有问题。。