因此,我有一个程序可以计算字符串中每个字母的出现次数,为此,我使用了

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。我使用扫描仪读取输入。

最佳答案

在以下情况下尝试以下操作:

else if (value == 230)
  charAmount[26]++;
else if (value == 248)
  charAmount[27]++;
else if (value == 229)
  charAmount[29]++;


您还可以对字符及其关联进行数组处理,该数组如下所示:

spChars_to_Chars =
  0 => 96
  1 => 97
  ...
  229 => 29
  230 => 26
  ...
  248 => 27


然后在以下情况下执行此操作:

charAmount[spChars_to_Chars[value]]++;

10-07 19:28
查看更多