为什么它给我一个NoSuchElementException错误

时间:2014-03-15 21:19:09

标签: java nosuchelementexception

public static void getBooks()throws FileNotFoundException{

  Scanner input = new Scanner(bookFile);
  String line = input.nextLine();
  bookNum = 1;

  while (input.hasNextLine()) {
     bookNum += 1;
     line = input.nextLine();
  }

  bookarray = new String[3][bookNum];

  for (int y = 0; y < bookNum; y++){
     bookarray [0][y] = line.substring(0,10);
     bookarray [1][y] = line.substring(11,15);
     bookarray [2][y] = line.substring(17,18);
     line = input.nextLine();
  }     
}

程序编译但它给我一个如下错误: 线程“main”中的异常java.util.NoSuchElementException:找不到行 指向line = input.nextLine();我不明白为什么。

1 个答案:

答案 0 :(得分:0)

问题是,在while循环中,您耗尽了Scanner个对象,因此其中没有任何行。

稍后当你在nextLine()循环中调用for时,它会抛出异常,因为你已经遍历了你的行。

我的建议是使用List和pojo代替:

List<MyBookPojo> bookPojos = new ArrayList<MyBookPojo>();

其中MyBookPojo可以包含您从每行中提取的3 String个。

因此,您可以在列表中添加任意数量的对象。