问答详情
源自:1-9 经验总结

课后习题已编 求大神指出不足之处 不会的朋友也可以参考一下

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();
	}

}


提问者:富真好 2016-01-23 17:29

个回答

  • qq_倔強人生_0
    2016-01-27 01:03:10
    已采纳

     int num;

        String name;

    这个地方最好用private进行封装调用时是用get的方法;其他我觉得挺好的

  • 慕粉3170877
    2016-05-12 22:33:26

    int num;

    String name;

    这个地方最好用private进行封装,对于这样,private只是限于在本类中使用,那Library类中岂不是不能 用他的

    信息?

  • 慕粉3170877
    2016-05-12 22:12:32

    我刚才运行了一下代码,发现没有必要回滚啊

  • 极客小白
    2016-04-04 00:26:15

    你好,参考打印出了,查找原因,目前是同时定义了 两个类型的变量b ,分别是String ,int ,尝试将变量变换两者不能相同吧,问题解决。小白请教。

  • Emma0412
    2016-03-02 15:55:33

    我运行了代码 之后,发现,没有运行catch()块中的代码

  • jackinsh
    2016-03-01 23:57:47

    对于Scanner input.楼主要记得调用input.close()关闭会比较好

  • lucitas
    2016-02-24 18:12:17

    问下 输入的书名不匹配 为什么会抛出一个异常 

  • wasfp
    2016-02-24 16:16:51

    想问问能写出这样的代码,需要怎么学习,自己也看了问题但是仍然没有思路和想法,只是知道最基本的一些简单知识,求指教。

  • Myles小帅哥
    2016-02-22 12:27:21

    问题:在Books类里定义的静态数组books,在类Library类里不能直接调用吧,我尝试了下,不对啊,应该在Liberay里调用一下Books的构造函数吧!

  • 情義丶叶神
    2016-02-10 11:53:29

    根据书名找不到书不会提示错误。

  • Q版刘刘刘
    2016-02-03 11:18:06

    这样递归算不算“异常链”呢?

  • Deny_小田
    2016-01-24 08:16:09

    整体来说不错,提个小建议:或许可以在类与类之间建立一些关系(如:继承),使得他们之间的耦合更加紧密,从而达成一些效率上的提升

  • bytwohitsnow
    2016-01-23 21:41:55

    呃。。。原来木有问题。。