Java 子字符串匹配失败

标签 java bufferedreader

我正在使用一个文本文件从缓冲读取器中读取值并将该文件加载到缓冲读取器中。此后,我逐行读取文件并检查是否有任何行包含我的关键字之一(我已经将它们放在字符串列表中)。

但是,即使该行包含我正在查找的关键字,它也不会检测到它并给它一个 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/

相关文章:

java - 需要生成QueryParam的getter和setter

java - 在 log4j2 SMTPAppender 中运行时从属性设置为、来自、主题值

java - Spring LDAP 实现故障转移能力

java - RejectedExecutionException 的原因可能是什么

java - 数据提取?

java - 如何计算Java中某些列中txt文件中整数出现的次数?

java - BufferedReader 和 BufferedInputStream 的区别

Java - 无法完成写入文本文件

java - 为什么 isEmpty() 在 BufferedReader 中跳过很多行?

java - 为什么这个基本的客户端-服务器程序不传递数据?