使用线性搜索来检查?

时间:2015-10-25 01:05:30

标签: java arrays string

我正在尝试比较一个包含单词列表的.txt文件,以及一个也充满单词的String []数组。

解决了,谢谢。

2 个答案:

答案 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
}

除此之外,您可能还有其他一些问题,但希望这可以解决您目前的问题。