有人可以帮助我使用以下JAVA代码

时间:2017-07-22 00:48:56

标签: java character

char[] arr = inputString.toCharArray();
int[] a = new int[26];

for (char ch : arr) {
    a[ch - 'a']++;
}

有人能解释一下这个for循环中发生了什么吗?

2 个答案:

答案 0 :(得分:1)

您的代码将a内的任何字母(小写)的出现次数存储在数组inputString中。

基本上,a数组有26个“位置”。每个位置代表a-z中按字母顺序排列的字母。这意味着a[0]代表字母“a”,a[1]代表字母“b”,依此类推。

在java中,char变量的内部处理方式与int类型相同。这意味着您可以将char解析为int。 char的int值是该char的UTF-16十进制表示(请参阅http://asecuritysite.com/coding/asc2)。如您所见,字符“a”的十进制UTF-16代码为97.可以说,例如,您的for循环正在处理字母“b”。其十进制值为“98”。在java中,'b'-'c'是1(98-97)。因此,您的代码将在数组的位置1中以1的整数增加。换句话说,它正在计算字母b的出现次数。

当然,如果正在处理的字母不是a-z,代码将抛出异常。

答案 1 :(得分:0)

它计算输入字符串中每个小写字母的出现次数。如果其中一个字符不是a-z,我希望数组索引超出范围。