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

线。谁能帮我?

4

1 回答 1

0

你应该检查 -> input.hasNext()

检查本教程扫描仪示例或阅读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();
  } 
  }    

}
于 2014-03-17T07:27:05.710 回答