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

how to print count of each character in a string using java

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

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;
            }
        }
    }
}

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

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 table.

轻松地使其适用于更大范围的字符

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

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

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

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

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