2016-06-10 34 views
-1

我的任務是刪除連續重複的字符,並替換字符串中重複字符的計數。當我比較這兩個字符時,我得到了IndexOutOfBoundException。我不知道如何糾正它。是初學者。我在這裏附上我的代碼。任何人都可以驗證我的代碼並幫助我。比較java中字符串中的字符?

程序:

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

確切的堆棧跟蹤,我們需要更多的細節。 – Li357

回答

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++)應該可以解決問題。

+0

非常感謝。我得到了輸出。 – user3661367

+0

我想在字符數組中添加計數值。但我不能將它添加到字符數組中。問題出現在r [j ++] = char(k)行。如何將整數值添加到char數組中。 – user3661367

+0

@ user3661367:字符數組中的「int」將被視爲一個字符。你可以做的是有一個字符串數組,然後將字符和數字的字符串值添加到它。 – npinti