如何使用java打印字符串中每个字符的计数

Posted

技术标签:

【中文标题】如何使用java打印字符串中每个字符的计数【英文标题】:how to print count of each character in a string using java 【发布时间】:2022-01-16 11:49:56 【问题描述】:

嘿,我试图通过将字符串中的每个字符与字符串中的第一个字符进行比较来找出计算字符串中每个字符的逻辑,但我似乎无法弄清楚其余的。如果有人可以帮助完成此操作。

public class Main 
    public static void main(String[] args) 
        String word = "AaaaABBbccKLk";
        countLetter(word);
    

    public static void countLetter(String word)
        int count = 0;
        char firstChar = word.toLowerCase().charAt(0);
        char ch;

        for(int i = 0 ; i<word.length(); i++)
            ch = word.toLowerCase().charAt(i);

            if(ch == firstChar)
                System.out.println(ch + "=" + count);
                count++;
            
            if(ch != firstChar && count > 0)
                count=0;
                System.out.println(ch + "=" + count);
                count= count + 1;
            
        
    

【问题讨论】:

为学生做功课不是本网站的目标。我确实想知道您的任务目标是否是使用Map。此外,char 类型自 Java 2 以来已过时,基本上已损坏,无法表示大多数字符。请改用代码点整数。 这实际上不是学校作业,更像是练习,但谢谢@BasilBourque @SEJU 这个问题你还需要帮助吗? 【参考方案1】:

我假设你可能想要这样的东西:

class Main 

 public static void main(String[] args) 
    String word = "AaaaABBbccKLk";
    countLetter(word);
  
  public static void countLetter(String word)
    int[] charCount = new int[26];
    word = word.toLowerCase();
    for(int i = 0; i < word.length(); i++)
      char letter = word.charAt(i);
      int index = (int)letter - 97;
      charCount[index]++;
    
    for(int i = 0; i < charCount.length; i++)
      System.out.println("Occurrences of " + (char)(i + 97) + " :" + charCount[i]);
    
  

虽然此代码仅适用于具有字符 A-Z 的字符串,但您可以通过扩展 charCount 的大小并使用 ASCII 表轻松地使其适用于更大范围的字符。

这段代码的工作方式是它创建一个大小为 26(英文字母的数量)的整数数组,然后将 String 小写,因为在编程中,小写和大写字母实际上是不同的。

接下来,我们遍历单词并将每个字母转换为一个索引,方法是将其转换为它的 ASCII 值并减去 97,这样我们就可以得到 0 到 25 范围内的字符。这意味着我们可以将每个字母分配给一个索引在我们的数组中,charCount。

从这里开始,我们只增加与每个字母的索引对应的数组元素。

最后,我们只打印出每个字母及其频率。

如果您有任何问题,请告诉我! (同样在未来,请尝试对您的流程提供更多见解,以便更容易指导您,而不仅仅是给出答案)。

【讨论】:

我理解你的做法。谢谢! @FirestarXYZ

以上是关于如何使用java打印字符串中每个字符的计数的主要内容,如果未能解决你的问题,请参考以下文章

删除重复的数组条目

如何对包含多个字符串的结构应用基数排序(使用计数排序)

如何在 C++ 中使用 MPI 收集字符字符串并为每个进程打印它们?

如何在使用 itertools.groupby 删除重复项时包含每个字符的计数

Java如何计数替换字符串中第一次出现的子字符串?

如何从单个文本文件中同时打印字符串和整数?