无法在数组类型String []上调用charAt(int)

时间:2018-06-16 12:41:14

标签: java string char type-conversion

我正在做一个计算字符串中数字的函数:

int countOccurences(String str) {

    // split the string by spaces in a
    String a[] = str.split(" ");

    // search for pattern in a
    int count = 0;

    for (int i = 0; i < a.length; i++) 
    {
        char b = a.charAt(i);
        if (Character.isDigit(b))
            count++;
    }

    return count;
}

错误是:

Cannot invoke charAt(int) on the array type String[]"

任何想法如何解决?

5 个答案:

答案 0 :(得分:4)

您正尝试在String[]上调用charAt()方法。 String[]没有这样的方法,但是String。我相信你想做的是:

char b = a[i].charAt(i);

这将从char数组

获取i位置String的{​​{1}}位置i

答案 1 :(得分:3)

aString[],并且没有方法charAtString确实如此。

答案 2 :(得分:1)

除了这里的其他答案,这还有一点。对于您的特定任务,不需要拆分字符串。您可以用这种方式计算位数

String str = "some st2ring5 wit43h dig1its";

int count = 0;
for (int i = 0; i < str.length; i++) {
    char b = str.charAt(i);
    if (Character.isDigit(b)) count++;
}

return count;

答案 3 :(得分:1)

char b = a[i].charAt(i); // This is faulty.

/* It won't help because when your loop runs the first time it checks
   the first letter of the first string and when it runs the second time, 
   it checks the second letter of the second string of the array. */

您不需要将字符串转换为char [],只检查其中的数字。 您可以使用字符串本身进行检查。 试试这个:

public String numOfDigits(String str){
    int count = 0;
    for (int i = 0; i < str.length; i++) 
    {
        char b = str.charAt(i);
        if (Character.isDigit(b))
        count++;
    }

    return count;
} 

答案 4 :(得分:0)

试试这个

String str = "hello1 world";
        String a[] = str.split(" ");

        // search for pattern in a
        int count = 0;
        char b ;
        for (int i = 0; i < a.length; i++) 
        {
            for(int j = 0 ; j< a[i].length() ; j++){
                b = a[i].charAt(j);
                if (Character.isDigit(b)){
                    count++;
                }
            }
        }
        System.out.println(count);

    }

输出:1