为了账号安全,请及时绑定邮箱和手机立即绑定

花了一下午写的借书系统的作业,运行良好。但有两个小问题,希望高手指点一下。

package com.imooc.homework;
import java.util.Scanner;

public class Initial {

	@SuppressWarnings("resource")
	public static void main(String[] args) throws Order,NoExistException{
		// TODO 自动生成的方法存根
		//赋值:"C语言", "数据结构", "汇编语言", "高数", "大学语文", "毛概"
		Book[] books={new Book(1,"C语言"),new Book(2,"数据结构"),new Book(3,"汇编语言"),
				new Book(4,"高数"),new Book(5,"大学语文"),new Book(6,"毛概")				
		};		
		
	while(true){
		//开始查询
		//选择查询方式	
		System.out.println("***输入命令:1-按照名称查找图书;2-按照序号查找图书");
         Scanner input=new Scanner(System.in);
        int seekType;
        try{
        	 seekType=input.nextInt();
        }catch(Exception e){
			System.out.println("命令输入错误!请根据提示输入数字命令!");
			input = new Scanner(System.in);
			continue;
		}//排除输入不为数字的情况
        
        if(seekType==1){
        	//用图书名寻找图书
       
        	System.out.println("输入图书名称:");
        	String j=input.next(); 
        	for(int i=0;i<books.length;i++){	
        		if(j.equals(books[i].getBookName())){
        			System.out.println("book:"+books[i].getBookName());
        			return;
        		}
        	}
        	System.out.println("图书不存在");
        	continue;
      
        }
        else if(seekType==2){
        	//用图书序号寻找图书
        	System.out.println("输入图书序号:");
        	int k;
        	
        	try{
        		  k=input.nextInt();
        	 }catch(Exception e){
        		System.out.println("命令输入错误!请根据提示输入数字命令!");
     			input = new Scanner(System.in);
     			continue;
        	 }
        	 
         	 for(int i=0;i<books.length;i++){	
        		if(books[i].getBookNum()==k){
        			System.out.println("book:"+books[i].getBookName());
        			return;
        		}
        	}
         	System.out.println("图书不存在");
        	continue;
    				
        }else{
        	System.out.println("命令输入错误!请根据提示输入数字1或2");
			continue;
        }
		  
	}
	}

}
package com.imooc.homework;
//定义所有书的类
public class Book {
	private int bookNum;      //书序号
	private String bookName;  //书名	
	public Book(){
		
	}
	
	public Book(int bookNum,String bookName){
		this.bookNum = bookNum;
		this.bookName = bookName;
	}
	
	protected int getBookNum() {
		return bookNum;
	}
	protected void setBookNum(int bookNum) {
		this.bookNum = bookNum;
	}
	protected String getBookName() {
		return bookName;
	}
	protected void setBookName(String bookName) {
		this.bookName = bookName;
	}

}


问题一:

——————————————————————————————————————

运行效果:

***输入命令:1-按照名称查找图书;2-按照序号查找图书

1

输入图书名称:

高数

图书不存在

***输入命令:1-按照名称查找图书;2-按照序号查找图书

——————————————————————————————————————

如上,当运行程序,依次输入"1""高数”时,当输入高数时光标默认是在“输入图书名称”这一行的前面,那么当输入完“高数”时,高数自动显示到“输入图书名称”这一行的下一行的,但调试时发现,这时变量 j 里面存的就是“gaoshugao高数”这个数据串。但如果在输入的时候,点击下鼠标,把光标放在“输入图书名称”这一行的下一行,那么变量 j 就赋值为“高数”,结果运行良好。

我的问题是:输入时和光标的位置有关吗?还是我的编程哪一点有问题?如何改进?

问题二:

——————————————————————————————————————————————

如上面的一段代码:       

 Scanner input=new Scanner(System.in);
       int seekType;
       try{
        seekType=input.nextInt();
       }catch(Exception e){
        System.out.println("命令输入错误!请根据提示输入数字命令!");
        input = new Scanner(System.in);
        continue;
}//排除输入不为数字的情况

——————————————————————————————————————————

当应该输入数字,但如果输入非数字,那么会出现异常。我捕捉到这个异常,输出提示,并用了这个语句“input = new Scanner(System.in);”。请问这个语句有必要用吗?我用是因为老师给的答案里是这么做的,但我不知道为什么要这么做?如果不这样会出问题吗?我的一个猜想是:老师的答案里,input是静态static函数(老师用的是console这个变量),所以需要重新初始化一下,而我的是protect的,是不是就不需要?

因为水平低,这个作业做了一下午加半个晚上。希望提高自己的水平,但见识有限,希望高人能指点一下。

正在回答

1 回答

我也是初学者,学到这里了。

问题一:

我也是这种情况,应该是软件自身的原因吧;

问题二:

应该是这样

另外我认为用if else 控制流程不太好,我刚开始也是这样,后来发现如果输入的数字是3或4或5或6.。。。,你会发现这个“异常”是捕捉不到的,可以用switch选择结构,default可以排除这个情况。我觉得异常一块捕捉了更方便啊

这是我的代码

import java.util.Scanner;
public class Book {
 static String [] books={"大学","数据结构","论语"};
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  while(true){
  System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
  Scanner s=new Scanner(System.in);
  try{
   int a = s.nextInt();
   switch(a){
   case 1:
    System.out.println("请输入图书名称:");
    String name = s.next();
   for(String o :books){
    if(o.equals(name)){
     System.out.println("book:"+o);
         return ;
    }
   }
    System.out.println("该图书不存在");
       break;
   case 2:
     System.out.println("请输入图书序号:");
     int number=s.nextInt();
     for(String o:books)
      if(o.equals(books[number-1])){
        System.out.println("book:"+o);
        return;
      }
     System.out.println("该图书不存在:");
     break;
   default:
    System.out.println("命令输入错误!");
   }
  }catch(Exception e)
  {
   System.out.println("命令出入错误,请根据提示输入命令");
  }
 }
 }
}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

花了一下午写的借书系统的作业,运行良好。但有两个小问题,希望高手指点一下。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信