java - 使用 ASCII 表(Unicode 代码)计算数组中的每个字母

标签 java arrays

我是 Java 的新手,我无法理解这个结构:

public static int[] upperCounter(String str) {
    final int NUMCHARS = 26;
    int[] upperCounts = new int[NUMCHARS];
    char c;

    for (int i = 0; i < str.length(); i++) {
        c = str.charAt(i);
        if (c >= 'A' && c <= 'Z')
            upperCounts[c-'A']++;
    }

    return upperCounts;
}

这个方法有效,但是 list[c-'A']++; 是什么意思?

最佳答案

c - 'A'['A' .. 'Z'] 范围内的一个字符,然后减去 'A' 创建一个 [0 .. 25] 范围内的数值,这样它就可以用作数组索引。

upperCounts[c - 'A']++ 使用其对应的索引 c - 'A' 增加字符 c 的出现次数>.

实际上,循环正在生成一个字符类型计数数组。

关于java - 使用 ASCII 表(Unicode 代码)计算数组中的每个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27630192/

相关文章:

ruby-on-rails - 如何允许哈希中的所有值

java - 在 Java 中将数组作为参数传递时创建数组

java - 如何返回整数数组中存储的值的平均值?

java - JBoss AS 7 - 启动初始化后

java.lang.NoSuchMethodError : org/apache/http/conn/scheme/Scheme. <init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V

java - 使用多线程时如何深度复制 HashMap

java - 修改 BufferedReader 以忽略最后一行

Java/Android : generic method - apply same functionality to different objects

java - 查找数组中不同的重复项

arrays - 使用一与两个 block 参数调用 `Hash#map`