Java Exception in Counting字符串中出现的字符数

时间:2013-08-20 17:21:47

标签: java string exception character

我是一名java初学者,想做一些逻辑工作。我已经开始使用一个简单的程序(即)来查找字符串中字符的出现次数。但我最终得到了这个例外

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 52
    at java.lang.String.charAt(Unknown Source)

我使用了以下代码

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String myStr = "sofdaasdasdaofsdwerwtytuoftyutyusdfsdfsdcsadaswdeasd";
        // Counting number of occurences of 'of' in myStr
        int counter = 0;
        int totalLength = myStr.length();
        char char1;
        char char2;
        // To find of
        String myVal = "of";
        String cmpVal1;
        String cmpVal2;
        String cmpValStr;
        for (int i = 0; i < totalLength; i++) {
            char1 = myStr.charAt(i);
            cmpVal1 = Character.toString(char1);
            char2 = myStr.charAt(i + 1);
            cmpVal2 = Character.toString(char2);
            cmpValStr = cmpVal1 + cmpVal2;
            if (cmpValStr == myVal) {
                counter++;
            }

        }
        System.out.print(counter);
    }

}

3 个答案:

答案 0 :(得分:3)

for (int i = 0; i < totalLength-1; i++) {
    //additional code..
    if (cmpValStr.equals(myVal)) {
        counter++;
    }
}

你的'for'循环应该是这样的。由于增加了char2,请确保从String的长度中减去1。

此外,在比较两个字符串时,请使用.equals()

虽然,如果您感兴趣,我会这样做:

String myStr = "sofdaasdasdaofsdwerwtytuoftyutyusdfsdfsdcsadaswdeasd";
int counter=0;
for(int i=0;i<myStr.length()-1;i++){
    if(myStr.subSequence(i, i+2).toString().contains("of"))
    {
        counter++;
    }
}
System.out.print(counter);

答案 1 :(得分:0)

I + 1;这是问题所在。

 char2 = myStr.charAt(i + 1);

 cmpValStr = cmpVal1 + cmpVal2;  // use equals for String.

 for (int i = 0; i < totalLength - 1; i++) // Not i< totalLength

希望这有帮助。

答案 2 :(得分:0)

这是你的问题:

char2 = myStr.charAt(i + 1);

你在最后一个字符上超出界限。

尝试做:

for(int i = 0; i&lt; totalLength-1; i ++)