2016-06-10 9 views
-1

Meine Aufgabe besteht darin, die sich fortlaufend wiederholenden Zeichen zu entfernen und die Anzahl der wiederholten Zeichen in der Zeichenfolge zu ersetzen. Als ich die zwei Zeichen verglichen habe, habe ich die IndexOutOfBoundException bekommen. Ich weiß nicht, wie ich es korrigieren soll. Bin Anfänger. Ich habe meinen Code hier angehängt. Könnte jemand meinen Code verifizieren und mir helfen?Zeichen in Zeichenfolge in Java vergleichen?

Programm:

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

Genaue Stacktrace bitte, wir brauchen mehr Details. – Li357

Antwort

1

In Java Sammlungen sind 0 basiert, somit wird eine Sammlung von Größe 5 haben Standorte von 0 bis 4. In Ihrem Fall Sie diese Zeile haben: al.get(i+1). Dadurch wird versucht, auf die Adresse n + 1 zuzugreifen, wobei n die Größe der Sammlung ist.

Ersetzen for(i=0;i<al.size();i++) mit diesem: for(i=0;i<al.size() - 1;i++) sollte das Problem lösen.

+0

Vielen Dank. Ich habe die Ausgabe bekommen. – user3661367

+0

Ich möchte die Zählwerte in einem Zeichenfeld hinzufügen. Aber ich kann es nicht im Zeichenfeld hinzufügen. Das Problem liegt in der Zeile r [j ++] = char (k). Wie füge ich dem Char-Array einen Ganzzahlwert hinzu? – user3661367

+0

@ user3661367: Ein 'int' in einem Zeichen-Array wird als ein Zeichen behandelt. Sie könnten stattdessen ein Zeichenfolgenarray verwenden und stattdessen den Zeichenfolgenwert des Zeichens und der Zahl hinzufügen. – npinti

Verwandte Themen