我的作业问题之一是
定义一个名为countAll的方法,该方法接受String作为参数。该方法必须
返回大小为27的int数组,以便位置0的值是对
输入中的“ a”和“ A”字符,位置1的值是“ b”和“
输入中的“ B”字符,…位置25的值是输入中“ z”和“ Z”字符数的计数,位置26的值是所有非字母字符的计数
输入中的字符。
我试图用解决
public static int[] countAll(String input){
int[] ints = new int[27];
for(int i=0;i<input.length();i++){
if(input.charAt(i)=='a'||input.charAt(i)=='A'){
ints[0]+=1;
}
if(input.charAt(i)=='B'||input.charAt(i)=='b'){
ints[1]++;
}
if(input.charAt(i)=='c'||input.charAt(i)=='C'){
ints[2]++;
}
if(input.charAt(i)=='d'||input.charAt(i)=='D'){
ints[3]++;
}
if(input.charAt(i)=='e'||input.charAt(i)=='E'){
ints[4]++;
}
if(input.charAt(i)=='f'||input.charAt(i)=='F'){
ints[5]++;
}
if(input.charAt(i)=='g'||input.charAt(i)=='G'){
ints[6]++;
}
if(input.charAt(i)=='h'||input.charAt(i)=='H'){
ints[7]++;
}
if(input.charAt(i)=='I'||input.charAt(i)=='i'){
ints[8]++;
}
if(input.charAt(i)=='j'||input.charAt(i)=='J'){
ints[9]++;
}
if(input.charAt(i)=='K'||input.charAt(i)=='k'){
ints[10]++;
}
if(input.charAt(i)=='l'||input.charAt(i)=='L'){
ints[11]++;
}
if(input.charAt(i)=='m'||input.charAt(i)=='M'){
ints[12]++;
}
if(input.charAt(i)=='n'||input.charAt(i)=='N'){
ints[13]++;
}
if(input.charAt(i)=='o'||input.charAt(i)=='O'){
ints[14]++;
}
if(input.charAt(i)=='p'||input.charAt(i)=='P'){
ints[15]++;
}
if(input.charAt(i)=='q'||input.charAt(i)=='Q'){
ints[16]++;
}
if(input.charAt(i)=='r'||input.charAt(i)=='R'){
ints[17]++;
}
if(input.charAt(i)=='s'||input.charAt(i)=='S'){
ints[18]++;
}
if(input.charAt(i)=='T'||input.charAt(i)=='t'){
ints[19]++;
}
if(input.charAt(i)=='U'||input.charAt(i)=='u'){
ints[20]++;
}
if(input.charAt(i)=='V'||input.charAt(i)=='v'){
ints[21]++;
}
if(input.charAt(i)=='W'||input.charAt(i)=='w'){
ints[22]++;
}
if(input.charAt(i)=='x'||input.charAt(i)=='X'){
ints[23]++;
}
if(input.charAt(i)=='y'||input.charAt(i)=='Y'){
ints[24]++;
}
if(input.charAt(i)=='z'||input.charAt(i)=='Z'){
ints[25]++;
}
}
return ints;
}
}
但这是解决问题的不切实际的方法。
所以我想知道如何缩短for循环内的代码,以及如何解决具有特殊字符的部分。
最佳答案
使用char值的数字表示来简化。 Google为任何ASCII table查找这些值。
a-z(小写)是97-122。
因此,首先将字符串转换为所有小写字母,例如:
if(charVal >= 97 && charVal <= 122){
ints[charVal - 97]++;
// The -97 gives you an array index of 0 through 25.
}
else {
// Otherwise it's not a-z.
ints[26]++;
}