比较java中字符串中的字符?

时间:2016-06-10 05:21:58

标签: java string collections

我的任务是删除连续重复的字符并替换字符串中重复字符的计数。当我比较两个字符时,我得到了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);
     }
}

}

1 个答案:

答案 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++)可以解决问题。