如何统计并显示Java字符串中每个字母的出现次数?
解决Java中句子字母出现次数统计的问题
嘿,你已经迈出了不错的第一步!接下来咱们把字母统计的逻辑补进去就行,我给你一步步拆解:
核心思路
要统计每个字母的出现次数,咱们需要一个键值对结构来存「字母-次数」的对应关系,Java里HashMap<Character, Integer>就很适合干这个活。另外还要注意只统计字母,得先过滤掉非字母的字符。
修改后的完整代码
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class LetterCounter { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("type the sentence you want to find the letters of"); String sentence = s.nextLine(); getLetters(sentence); s.close(); // 记得关闭Scanner,养成好习惯 } public static void getLetters(String sentence) { // 创建HashMap来存储字母和对应的出现次数 Map<Character, Integer> letterCountMap = new HashMap<>(); char ch[] = sentence.toCharArray(); for (int i = 0; i < ch.length; i++) { char currentChar = ch[i]; // 只处理字母字符 if (Character.isLetter(currentChar)) { // 可选:如果不区分大小写,统一转成小写(或大写) // currentChar = Character.toLowerCase(currentChar); // 判断Map里是否已经有这个字母 if (letterCountMap.containsKey(currentChar)) { // 有就把次数加1 letterCountMap.put(currentChar, letterCountMap.get(currentChar) + 1); } else { // 没有就初始化为1 letterCountMap.put(currentChar, 1); } } } // 输出统计结果 System.out.println("\n字母出现次数统计:"); for (Map.Entry<Character, Integer> entry : letterCountMap.entrySet()) { System.out.println("字母 '" + entry.getKey() + "' 出现了 " + entry.getValue() + " 次"); } } }
关键部分解释
- 过滤非字母:用
Character.isLetter(currentChar)判断当前字符是否是字母,自动跳过标点、空格这些非字母内容。 - 大小写处理:如果不需要区分大小写,把代码里注释的那行打开,将字符统一转成小写或大写,这样'A'和'a'会被统计成同一个字母。
- HashMap统计逻辑:遍历每个字母时,检查Map里有没有这个键,有就累加次数,没有就新增键值对初始化次数为1。
- 结果输出:遍历HashMap的entrySet,逐个打印字母和对应的次数。
这样运行代码后,输入任意句子,就能得到每个字母的出现次数啦!
内容的提问来源于stack exchange,提问作者Harley Jenkins
相关产品推荐
相关产品推荐

