我的任务是删除连续重复的字符并替换字符串中重复字符的计数。当我比较两个字符时,我得到了IndexOutOfBoundException。我不知道如何纠正它。我是初学者。我在这里附上我的代码。任何人都可以验证我的代码并帮助我。
程序:
import java.util.*;
public class RemoveDupchar{
public static void main(String []args){
String string = "aabbccdefatafazaacddsegf";
char[] chars = string.toCharArray();
ArrayList<Character> al=new ArrayList<Character>();
for(char c : chars)
{
al.add(c);
}
int i=0;
int j=0,k=1;
char[] r = new char[100];
for(i=0;i<al.size();i++)
{
char ch;
ch=al.get(i);
if(ch!=al.get(i+1)) **//I got Runtime error here**
{
r[j++]=ch;
}
else
{
r[j++]=ch;
while(al.get(i)==ch)
{
++k;
++i;
}
r[j++]=(char)k;
}
}
for(char c: r)
{
System.out.print(c);
}
}
}
答案 0 :(得分:1)
在Java中,集合是基于0的,因此,大小为5的集合将具有0到4的位置。在您的情况下,您有这一行:al.get(i+1)
。这将尝试访问n + 1
位置,其中n
是集合的大小。
用for(i=0;i<al.size();i++)
取代for(i=0;i<al.size() - 1;i++)
可以解决问题。