我的代码给了我一个没有这样的元素异常

时间:2014-03-17 07:24:10

标签: java nosuchelementexception

public static void getBooks()throws FileNotFoundException{

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

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

  input = new Scanner(bookFile);
  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();
  }     

}

这段代码给了我这个错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1585)
    at BookInventory1.getBooks(BookInventory1.java:64)
    at BookInventory1.main(BookInventory1.java:15)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:838]

指着最后一个

  line = input.nextLine();

线。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你应该检查 - &gt; input.hasNext()

查看本教程scanner example或阅读javadoc或结帐next ()的具体javadoc

  

NoSuchElementException - 如果没有更多令牌可用

例如:

public static void getBooks()throws FileNotFoundException{

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

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

  input = new Scanner(bookFile);
  if(scanner.hasNextLine(){
  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);
     if(!line.hasNextLine()){break;}
     line = input.nextLine();
  } 
  }    

}