我正在尝试比较一个包含单词列表的.txt文件,以及一个也充满单词的String []数组。
解决了,谢谢。
答案 0 :(得分:0)
假设您最终只想获取两个文件中的单词列表:
Scanner fileReader = new Scanner(file);
Set<String> words = new HashSet<>();
while (fileReader.hasNext()) {
String s = fileReader.next();
words.add(s);
}
fileReader.close();
Scanner otherFileReader = new Scanner(otherFile);
List<String> wordsInBothFiles = new ArrayList<>();
while (otherFileReader.hasNext()) {
String s = otherFileReader.next();
if (words.contains(s)) {
wordsInBothFiles.add(s);
}
}
otherFileReader.close();
// Do whatever it is you have to do with the shared words, like printing them:
// for (String s : wordsInBothFiles) {
// System.out.println(s);
// }
答案 1 :(得分:0)
如果检查documentation,它通常会解释为什么方法会抛出异常。在这种情况下,“找不到行”意味着您已经到达了文件的末尾。这种错误有两种可能的方式:
String nextLine = scanner.nextLine(); //problem 1: reads a file with no lines
while (scanner.hasNextLine()) {
linearSearch(words,nextLine);
System.out.println(nextLine);
}
scanner.nextLine(); //problem 2: reads after there is not next line
由于你的循环似乎是无限的,我打赌你从第一行获得异常并可以通过在String nextLine = scanner.nextLine();
之前添加以下检查来修复它:
if(!scanner.hasNextLine()) {
System.out.println("empty file: "+filePath)
return; //or break or otherwise terminate
}
除此之外,您可能还有其他一些问题,但希望这可以解决您目前的问题。