0Pricing
Java Academy · 课时

需求与设计

明确问题、输入与输出、限制条件,以及单词统计工具的简单实现计划。

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

项目目标

目标:构建一个能够报告基本单词统计信息的小工具。我们将拆分文本、规范化单词、统计频率,并显示排名靠前的结果。

输入与输出

输入:目前暂时硬编码的一小段文本。输出:单词总数、不重复单词数,以及带有计数的前 N 个高频单词。

规范化规则

规范化:将文本转换为小写并去除标点。按照非字母字符拆分,使分词结果干净且便于比较。

计数策略

计数:将每个单词映射到一个频率。在 Java 中,使用由 String 映射到整数的简单 HashMap,对于第一版来说清晰且足够。

报告计划

报告:打印总数和前 N 个结果,例如排名前三的单词。计数相同时,顺序任意即可。让输出保持简单。

原型:小规模运行

制作原型:转换为小写、去除标点、拆分、计数并打印排名前三的单词。目前暂时将文本硬编码,并让输出保持易读。

public class Main {
  public static void main(String[] args) {
    // Prototype: hard coded text, normalize, count, and print simple stats.
    String text = "To be, or not to be: that is the question. To be or not?";
    // 1) Lowercase
    String lower = text.toLowerCase();
    // 2) Replace non letters with spaces for splitting
    String cleaned = lower.replaceAll("[^a-z]+", " ");
    // 3) Split on spaces and filter empty tokens
    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);
    }

    // Simple top 3 by repeated linear scan (fine for small texts)
    for (int k = 0; k < 3; 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) break;
      System.out.println("#" + (k + 1) + " " + bestWord + " = " + bestCount);
      // mark as used
      freq.put(bestWord, -1000000);
    }

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

先设计

快速检查:设计这个小项目时,哪一步应该最先进行?

回顾

回顾:我们明确了作用域,定义了 IO,制定了规则,选择了简单的映射来计数,并通过小规模运行验证了计划。

常见问题解答

「需求与设计」课时是免费的吗?

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

「需求与设计」这节课中我会学到什么?

明确问题、输入与输出、限制条件,以及单词统计工具的简单实现计划。 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

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

「需求与设计」课时需要多长时间?

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

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

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

此课程中的所有课时

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