读取文件中的字符。一次3个......在Java中

时间:2017-10-11 18:33:18

标签: java

我正在编写一个需要在给定文件中找到“the”一词的程序

    while ((c=reader.read())>=0)
    {
       if (c==116 && c+1==104 && c+2==101)
        return true;
    }

这显然是错误的,虽然它正确地将c的值与116(字符代码“t”)进行了比较, 但是,c+1显然不是输入中的下一个字符, 所以它没有将正确的东西与104(字符代码“h”)进行比较。 同上c+2和101(字符代码“e”)。

如何阅读文件以查找“the”这个词?

请注意,我不想使用数组或花哨的库。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

一次阅读3次并不容易。例如考虑输入"国歌"。前三个字符是" ant",第二个"下摆"。输入包含"",但它分为两个3-char序列。

逐字逐句阅读会更容易 例如,遵循此算法:

  • 使用reader.read()逐个字符阅读,直至文件结尾,或直至找到t
  • 再读一个字符并检查:
    • 文件结束了吗? - > return false
    • 不是h吗? - >继续寻找t
    • 它是h。然后再读一个字符并检查:
    • 文件结束了吗? - > return false
    • e吗? - > return true
  • 如果到达文件末尾,return false

以下是一种方法:

  boolean containsThe(Reader reader) throws IOException {
    int c1;
    while ((c1 = reader.read()) != -1) {
      if (c1 != 't') continue;

      int c2 = reader.read();
      if (c2 == -1) return false;
      if (c2 != 'h') continue;

      int c3 = reader.read();
      if (c3 == -1) return false;
      if (c3 == 'e') return true;
    }
    return false;
  }