减去char' a'迭代数组char时[26]

时间:2018-05-15 01:33:29

标签: java char

在以下迭代中

    char[] chars = new char[26];
    for (int i = 0; i < string.length(); i++)
    {
        chars[string.charAt(i) - 'a']++;
    }

字符串中的位置必须是chars[String.charAt(i) - 'a']而不是chars[String.charAt(i)],否则将抛出ArrayIndexOutOfBoundsException。为什么会这样?

1 个答案:

答案 0 :(得分:3)

因为如果你尝试使用char作为索引值,它会获取该字符的ascii值,因为它需要一个整数。您定义的数组大小为26.因此,ascii值大于25的任何char都将导致ArrayIndexOutOFBoundsException。

当你做string.charAt(i) - &#39; a&#39;基本上你要减去&#39; a&#39;的ascii值。来自string.charAt(i)的ascii值。这有助于从索引0到25访问字符a到z。

你还应该确保字符串中的所有字符都是小写的,否则你将再次遇到同样的问题。