我在程序中注释掉一行代码后,进入死循环,是Scanner的原因么?

来源:1-9 经验总结

攻城狮1994

2015-07-26 16:50

package homework;
import java.util.*;
public class BookSearch {
	Scanner in = new Scanner(System.in);	
	public static Book[] books = {new Book(1,"高数"),new Book(2,"操作系统"),new Book(3,"数据库"),new Book(4,"ssh"),new Book(5,"HTML5")}; 	
	public static void main(String[] args){
		BookSearch a = new BookSearch();
		a.choose();
	}
	public void choose(){
		 int searchType = 0;
		 while(true){
			 System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
			 try {
				searchType = in.nextInt();
			} catch (Exception e) {
				// TODO: handle exception
				System.out.println("请输入数字!");
			//	in = new Scanner(System.in); 为什么注释掉这一句之后,程序会无限循环
				continue;
			}finally{
				
			}
			 
			 if(searchType == 1)
			 {
				 searchByName();
			 }else if(searchType == 2)
			 {
				 searchByID();
			 }else
			 {
				 System.out.println("输入有误请重新输入");
			 }
		 }
	}
	public void searchByName(){
		String bookName ;
		System.out.println("输入图书名称:");
		bookName = in.next();
		for(int i = 0;i < books.length; i++){
			if(bookName.equals(books[i].getName()))
			{
				System.out.println("book:"+books[i].getName());
				return;
			}	
		}System.out.println("图书不存在");
		
	}
	public void searchByID(){
		int id ;
		System.out.println("输入图书序号:");
		id = in.nextInt();
		for(int i = 0;i < books.length; i++){
			if(id == books[i].getID())
			{
				System.out.println("book:"+books[i].getName());
				return;
			}	
		}System.out.println("图书不存在");
	}
}


写回答 关注

1回答

  • 神经旷野舞者
    2015-08-04 13:50:09
    已采纳

    每次重新定义Scanner对象

    詹士

    那为什么要重新定义呢?

    2015-09-15 19:16:43

    共 2 条回复 >

Java入门第三季

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

409784 学习 · 4339 问题

查看课程

相似问题