Java:用char减去char是什么意思?

RC2*_*793 2 java arrays

最近在通过一个程序时,我遇到了一个问题.以下是该计划的一部分

public static int numberNeeded(String first, String second) {
        int[] lettercounts = new int[26];
        for(char c : first.toCharArray()){
            lettercounts[c-'a']++;
        }
Run Code Online (Sandbox Code Playgroud)

我不明白这行代码的作用:

lettercounts[c-'a']++;
Run Code Online (Sandbox Code Playgroud)

我猜它是在特定字符的lettercounts数组中递增值(最初为0); 我猜测'a'的索引是0而'z'是25.但我想了解这段代码是如何工作的.

Mic*_*ael 5

目标是计算每个角色的出现次数.

c - 'a'
Run Code Online (Sandbox Code Playgroud)

是一种在字母表中获得角色位置的聪明方法.'a' - 'a'会给你0. 'b' - 'a'会给你1. 'c' - 'a'会给你2,依此类推.

该值用作数组的索引(正如您正确声明的那样,用零初始化)并且计数递增.


值得注意的是,如果a-z字符串中存在除字符之外的任何字符(包括大写字符),这将会中断,并且您会看到IndexOutOfBoundsException

  • 谢谢.现在我明白了.不用担心我的String值只包含小写字符. (2认同)