Java исключение из сканирования файла, который был импортирован

Я пытаюсь создать программу, которая импортирует текстовый файл и анализирует его, чтобы сказать мне, может ли другой текстовый файл соответствовать предложениям. Я продолжаю сталкиваться с этой ошибкой, когда импортирую свой файл и пытаюсь проанализировать его. Я предполагаю, что мне чего-то не хватает в моем коде.

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at PossibleSentence.main(PossibleSentence.java:30)

Вот мой код тоже:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class PossibleSentence {
   public static void main(String[] args) throws FileNotFoundException{       
      Scanner testScan = new Scanner(System.in);
      System.out.print("Please enter the log file to analyze: ");
      String fileName = testScan.nextLine();

      File f = new File(fileName);
      Scanner scan = new Scanner(f);
      String line = null;
      int i = 0;

      while (scan.hasNextLine()) {
         String word = scan.next();
         i++;
      }

      scan.close();

      File comparative = new File("IdentifyWords.java");
      Scanner compare = new Scanner(comparative);
      String line2 = null;
   }
}

Второй сканер я еще не закончил либо. Какие-либо предложения?

2 ответа

Решение

Нам нужно больше информации, чтобы окончательно ответить, но ознакомьтесь с документацией для следующего (). Выдает это исключение, когда нет следующего элемента. Я думаю, это из-за этой части:

String fileName = testScan.nextLine();

Вы не проверяете, если hasNextLine первый.

Вы передаете аргумент файла Scanner объект, попробуйте использовать InputStream

File input = new File(/* file argument*/);
BufferedReader br = null;
FileReader fr= null;
Scanner scan = null;
try {
    fr = new FileReader(input);
    br = new BufferedReader(fr);
    scan = new Scanner(br);
    /* Do logic with scanner */
} catch (IOException e) {
    /* handling for errors*/
} finally {
    try {
        if (br != null) {
            br.close();
        }
        if (fr != null) {
            fr.close();
        }
        if (scan != null) {
            scan.close();
        }
    } catch (IOException e) {
        /* handle closing error */
    }
}
Другие вопросы по тегам