2017-06-29 3 views
-10

I ArrayIndexOutOfBound Ausnahme in Linie bin immer 14.Während das Programm kompilieren, erhalte ich ArrayIndexOutOfBound Ausnahme

package str.files; 

public class Duplicate { 

public static void main(String[] args) 
{ 
    int count=0; 
    String s="this is a java is program "; 
    String[] dup= s.split(" "); 

    for(int i=1;i<=dup.length;i++) 
    { 
     //System.out.println(dup[i]); 
     if(dup[i].equalsIgnoreCase(dup[i+1])) 
     { 

      count++; 
     }   
     System.out.println("The duplicate character is : :"+dup[i]);  
    } 

    System.out.println("no. of occurances of the program is : "+count); 

} 

}

Die Ausnahme, die ich bin immer ist:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 
    at str.files.Duplicate.main(Duplicate.java:14) 
+1

Java-Arrays haben Indizes von 0 bis Länge 1, nicht 1 bis Länge. –

+2

Hinweis: Diese Ausnahme tritt beim Kompilieren nicht auf: Sie tritt auf, wenn Sie den Code ausführen. –

+0

Verwenden Sie auch 's.split (" \\ s + ");', um einen einzelnen oder mehrere Leerzeichen zu teilen. Auch Sie überprüfen nur, dass das Duplikat das nächste Element ist –

Antwort

0

Sie nur Schleife zu dup.length - 1.

for(int i=1;i<dup.length - 1;i++) 
{ 
    //System.out.println(dup[i]); 
    if(dup[i].equalsIgnoreCase(dup[i+1])) 
    { 

     count++; 
    }   
    System.out.println("The duplicate character is : :"+dup[i]);  
} 
+0

Was ist mit Element [0]? –

+0

Ich weiß es nicht. Sein Code startet Element [0] nicht. –

0

Weil Sie i+1 Looping können Sie Wert i mit weniger als dup.length - 1 erreichen, sonst hat man außerhalb der Grenzen des Arrays gehen.

Beginnen Sie auch mit i=0, die der Start des Arrays ist.

for(int i=0; i<dup.length - 1; i++) { 
    //System.out.println(dup[i]); 
    if(dup[i].equalsIgnoreCase(dup[i+1])) { 
     count++; 
    }   
    System.out.println("The duplicate character is : :"+dup[i]);  
} 
Verwandte Themen