Java 如何通过数组判断字符串是否包含特定数量的字符?

Java 如何通过数组判断字符串是否包含特定数量的字符?,java,Java,我的一个家庭作业问题是 定义一个名为countAll的方法,该方法接受字符串作为参数。该方法必须 返回一个大小为27的int数组,使得位置0中的值是数的计数 输入中的“a”和“a”字符,位置1中的值是“b”和“a”字符数的计数 输入中的“B”字符,…位置25中的值是输入中“z”和“z”字符数的计数,位置26中的值是所有非字母的计数 输入中的字符 我试着用计算机解决它 public static int[] countAll(String input){ int[] ints =

我的一个家庭作业问题是

定义一个名为countAll的方法,该方法接受字符串作为参数。该方法必须
返回一个大小为27的int数组,使得位置0中的值是数的计数
输入中的“a”和“a”字符,位置1中的值是“b”和“a”字符数的计数 输入中的“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;
    }

}
public static int[]countAll(字符串输入){
int[]ints=新的int[27];

对于(inti=0;i,因为这显然是一个家庭作业,所以任何人给你一个镀银的答案都不会有帮助。但下面是一些关于如何优化的见解

在Java中,一个字符可以是一个数值。例如
str.charAt(0)-'a'
将返回一个数值,其中
0
a
25
z
注意:a>与
有区别
'a'
;一个是
字符串
,另一个是
字符
)您还需要
str.toLowerCase()
您的字符串,如
'a'!='a'

然后,您只需循环遍历字符串的所有字符,获取字符值(如数组索引)并递增数组。如果字符值小于
0
或大于
25
,则字符值为
26


提示:
for(char c:input.tocharray()){…}
使用char值的数字表示来简化。用谷歌搜索任何字符来查找这些值

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]++;
}

如果(charVal>=97&&charVal您的任务似乎在讨论将每个字母的出现次数映射到数组的某个索引,可能会有所帮助?这是家庭作业问题的正确答案。+1