gpt4 book ai didi

java - 从文本文件读取时.contains 不起作用?

转载 作者:行者123 更新时间:2023-12-02 10:31:03 26 4
gpt4 key购买 nike

最近开始使用Java,并一直在尝试制作一个从预设文本文件中读取的数据库类型的程序,用户可以使用术语或定义本身中的关键字/术语来搜索定义。按术语搜索工作正常,但关键术语总是输出未找到。

  FileReader fr = new FileReader("text.txt");
BufferedReader br = new BufferedReader(fr);
boolean found = false;
String line = br.readLine(); // first line so the term itself
String lineTwo = br.readLine(); // second line which is the definition

do {
if (lineTwo.toLowerCase().contains(keyterm.toLowerCase())) {
found = true;
System.out.println("Found "+keyterm);
System.out.println(line);
System.out.println(lineTwo);

}
} while ((br.readLine()!=null)&(!found));
if (!found){System.out.println("Not Found");} br.close(); fr.close();

这是我用来检查部分有效的关键术语的方法,它似乎能够找到前两行。如果关键术语存在,这会导致它输出第一个术语的定义,但它不适用于任何其他术语。

编辑

它读取的文本文件看起来像这样:

术语
定义
术语
定义

每个人都有自己的线路。

编辑 2

感谢@Matthew Kerian,它现在检查整个文件,将 do while 循环的末尾更改为

 while (((lineTwo = br.readLine())!=null)&(!found));

它现在找到了实际的定义,但现在输出了错误的术语。

编辑 3 关键术语由用户输入定义

编辑4如果不清楚最后的输出,我要寻找的要么是术语/关键术语的定义(如果它在txt文件中),要么只是找不到(如果它是)未找到。

编辑5尝试查看它输出的内容,并注意到它在每个“lineTwo”之后输出数组(文本文件中的第一个术语),似乎行没有更新。

最终编辑设法通过制作另一个文本文件来粗略地解决问题,该文件以术语定义的方式翻转,现在是定义术语,一旦定义完成,让我调用下一行发现它可以正确读取。

最佳答案

lineTwo 未开始用新数据刷新。像这样的东西会更好:

do {
if (lineTwo.toLowerCase().contains(keyterm.toLowerCase())) {
found = true;
System.out.println("Found "+keyterm);
System.out.println(line);
System.out.println(lineTwo);

}
} while (((lineTwo = br.readLine())!=null)&(!found));

我们仍然通过检查 nullness 来检查 EOF,但是通过将其设置为等于第二行,我们会不断刷新缓冲区。

关于java - 从文本文件读取时.contains 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53612785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com