我正在使用一个文本文件从缓冲读取器中读取值并将该文件加载到缓冲读取器中。此后,我逐行读取文件并检查是否有任何行包含我的关键字之一(我已经将它们放在字符串列表中)。
但是,即使该行包含我正在查找的关键字,它也不会检测到它并给它一个 Miss。这是代码
for(int i=0;i<sortedKeywordList.size();i++)
{
String tempString=sortedKeywordList.get(i);
while(US.readLine()!=null)
{
String str=US.readLine();
//System.out.println(str);
if(str.contains(tempString)){
System.out.println("Contains: "+tempString);
}
else{
System.out.println("Miss");
}
}
}
最佳答案
对于每个关键字,您都使用 readLine() 遍历缓冲区。因此,在第一个关键字之后,您将耗尽缓冲区读取,并且下一个关键字测试甚至不会执行,因为 US.readLine()
为您提供 null。您没有重新初始化您的阅读器。
那么为什么不迭代一次文件(使用 readLine()
结构),然后针对每一行迭代关键字呢?
编辑:正如亨特所指出的(上面),您还在每个循环中调用 readLine() 两次。一次进入循环测试,一次检查每一行是否有关键字。我首先要确保您正确读取文件(只需在读取时打印出每一行)
关于Java 子字符串匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233050/