0Pricing
Java Academy · 课时

实现

将计划转化为代码:完成规范化、分词、计数,并通过小而易读的步骤打印排名靠前的结果。

实现 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 3 节课。

计划回顾

计划回顾:转换为小写、去除标点、拆分为分词结果、使用映射计数,然后打印总数和前 N 个结果。让每一步都保持简短而清晰。

规范化

规范化:转换为小写,并将非字母字符替换为空格。这样可以避免为同一个词的不同大小写形式创建不同的词元,同时移除逗号和句号。

分词

分词:按空白字符拆分,以得到干净的单词。请先去除首尾空白,这样第一个词元就不会为空。

计数

计数:使用从单词映射到计数的 HashMap。对于每个词元,如果已有对应计数就将其递增,否则插入 1。

报告

报告:先打印总数和唯一词数,然后列出排名前 N 的单词。对于较短的文本,使用简单的选择循环就足够了。

代码:完整运行

运行:您应该会看到总数、唯一词数和排名列表。对于较长的文本,请将选择过程替换为排序或最小堆。

public class Main {
  public static void main(String[] args) {
    // Implementation: normalize, tokenize, count, and print top 5.
    String text = "Be yourself; everyone else is already taken. Be kind. Be clear.";
    // 1) Lowercase
    String lower = text.toLowerCase();
    // 2) Replace non letters with spaces
    String cleaned = lower.replaceAll("[^a-z]+", " ");
    // 3) Split on spaces and filter empties
    String[] tokens = cleaned.trim().split("\\s+");

    java.util.Map<String, Integer> freq = new java.util.HashMap<>();
    int total = 0;
    for (int i = 0; i < tokens.length; i = i + 1) {
      String w = tokens[i];
      if (w.length() == 0) continue;
      total = total + 1;
      Integer c = freq.get(w);
      if (c == null) freq.put(w, 1);
      else freq.put(w, c + 1);
    }

    // Print top 5 words using repeated selection (simple for small data)
    int topN = 5;
    for (int k = 0; k < topN; k = k + 1) {
      String bestWord = null;
      int bestCount = -1;
      for (java.util.Map.Entry<String,Integer> e : freq.entrySet()) {
        String word = e.getKey();
        int count = e.getValue();
        if (count > bestCount) {
          bestCount = count;
          bestWord = word;
        }
      }
      if (bestWord == null || bestCount < 0) break;
      System.out.println("#" + (k + 1) + " " + bestWord + " = " + bestCount);
      // mark as used so it will not be picked again
      freq.put(bestWord, -1000000);
    }

    System.out.println("Total words: " + total);
    System.out.println("Unique words: " + (freq.size()));
  }
}

一致性检查

快速检查:为了确保不同大小写和标点情况下的计数一致,哪个步骤是必不可少的?

回顾

回顾:您已经端到端实现了整个流程。接下来,我们将使用边界情况进行测试,并考虑一些简单的扩展。

常见问题解答

「实现」课时是免费的吗?

是的 — 「实现」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 3 节课。

「实现」这节课中我会学到什么?

将计划转化为代码:完成规范化、分词、计数,并通过小而易读的步骤打印排名靠前的结果。 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「实现」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 需求与设计
  2. 实现
  3. 测试与扩展
← 返回 Java Academy