2016-08-16 5 views
0

При попытке сканирования текстового файла и последующего сканирования каждой отдельной строки в текстовом файле для создания объекта я получаю ошибку ниже. Любая идея о том, как я могу это исправить?Сканер в ошибке сканера

Error: java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:862) at java.util.Scanner.next(Scanner.java:1371) at MyZoo.readDataFromFile(MyZoo.java:111)

while(scanner.hasNextLine()){ 
    lineOfInput = scanner.nextLine(); 
    if(lineOfInput.startsWith("#")){ 

    } else { 
     String animalType, species, name; 
     Scanner newScanner = new Scanner(lineOfInput).useDelimiter("\\s*,\\s*"); 

     animalType = newScanner.next(); 
     System.out.println(animalType); 
     species = newScanner.next(); 
     name  = newScanner.nextLine(); 
    } 
+0

Какое содержимое он пытается прочитать? – Sanjeev

+0

Это текстовый файл, содержащий строки данных, которые я читал в строке с использованием 1-го сканера. Затем, пытаясь отсканировать каждое слово в строке, читайте, чтобы назначить их как переменные. После сканирования в первых 3, я хочу, чтобы он читал остальную часть данных в определенном для животных классе –

+0

Почему вы хотите использовать другой сканер? У вас уже есть функции 'String'' String', такие как 'split()' ... – brso05

ответ

1

Как вы сказали в комментарии

«Это текстовый файл, содержащий строки данных, я прочитайте в строке с использованием 1-го сканера, затем попытайтесь отсканировать каждое слово в строке, в которой нужно ввести их, чтобы назначить их в качестве переменных. После сканирования в первых 3, я хочу, чтобы он читал остальную часть данных в определенном классе животных "

Ваш второй сканер использует неправильный разделитель, из-за которого вы получаете это исключение.

попробовать:

Scanner newScanner = new Scanner(lineOfInput).useDelimiter("\\W"); 

Надеется, что это помогает.

+0

Большое спасибо, это сработало для меня! –

+0

Рад, что помогло вам :) – Sanjeev

2

Я думаю, что вы можете сделать это таким образом:

while (scanner.hasNextLine()) { 
    lineOfInput = scanner.nextLine(); 
    if (lineOfInput.startsWith("#")) { 

    } else { 
     String animalType, species, name; 

     String s[] = lineOfInput.split(" "); 
     animalType = s[0]; 
     species = s[1]; 
     name = s[2]; 
    } 

} 
+0

java.lang.ArrayIndexOutOfBoundsException: 2 \t на MyZoo.readDataFromFile (MyZoo.java:110). Является ли ошибка, которую я получаю, если я так делаю –

+0

, каждая строка содержит три строки animalType, виды и имя? – Shahid