首页 > 解决方案 > 这个程序是关于java中的字符串压缩的

问题描述

我是编码新手,所以请指导我解决这个问题。我从用户设置输入字符串 s 并声明 StringBuilder sb 和整数类型变量 consec

在“if”条件下,我在IndexOutOfBound这里遇到异常:

for (int i=0;i<s.length();i++) {
    consec++;
    if(s.charAt(i)!=s.charAt(i+1) || i+1>=s.length()) {
        sb.append(s.charAt(i));
        sb.append(consec);
        consec=0;
    }
}

标签: javastringfor-loop

解决方案


这是因为在循环的最后一次迭代中,您正在访问不在数组中的元素(索引高于数组的大小),所以试试这个:

for(int i=0;i<s.length()-1;i++){    //<<See this
    //your logic
}

当字符串的长度是偶数时,您需要在for循环之后明确地进行边缘情况检查。例如,

for(int i=0;i<s.length()-1;i++){    //<<See this
    //your logic
}
if(s.length()%2==0){
    //your logic when length is even and loop has ignored last character.
}

推荐阅读