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 */
}
}