实现
将计划转化为代码:完成规范化、分词、计数,并通过小而易读的步骤打印排名靠前的结果。
实现 是 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 反馈 — 无需本地设置。