繁体   English   中英

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

[英]Reading characters in a file. By 3 at a time.... in 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”?

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

一次阅读 3 篇不会那么容易。 例如考虑输入“国歌”。 前 3 个字符是“ant”,第二个是“hem”。 输入包含“the”,但它被分成两个 3-char 序列。

逐个字符读取会更容易,例如遵循以下算法:

  • 使用reader.read()逐个字符读取直到文件结束,或者直到找到t
  • 再读 1 个字符并检查:
    • 是文件结尾吗? -> return false
    • 不是h吗? -> 继续寻找t
    • 这是一个h 然后再读 1 个字符并检查:
    • 是文件结尾吗? -> 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;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM