需求与设计
明确问题、输入与输出、限制条件,以及单词统计工具的简单实现计划。
需求与设计 是 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 反馈 — 无需本地设置。