【发布时间】:2015-09-28 07:47:31
【问题描述】:
所以我有一个程序可以计算字符串中每个字母出现的次数,为此我使用了
int[] charAmount = new int[30];
for(int i = 0; i<text.length(); i++){
char sign = text.charAt(i);
int value = sign;
if(value >= 97 && value <= 122){
charAmount[value-97]++; // 97 = 'a'
}
这很好用,但我还需要覆盖字母 'æ' (230)、'ø' (248) 和 'å' (229)。如何在不使用 if 测试或开关的情况下将这三个字母“分配”给 charAmount 数组的第 26、27 和 29 个索引?
编辑:上面显示的代码不是整个块,我也有问题字母的开关,但我正在寻找更好的解决方案。
额外问题:当我尝试输入像“æææ”之类的字符串时,“æ”的值突然变为 8216。我使用扫描仪读取输入。
【问题讨论】:
-
只需为每个字符添加条件。没有比这更简单的解决方案了。或者使用
Map来进一步扩展