2012-12-09 28 views
5

EVerytime Scrivo qualsiasi codice simile a questo, ottengo questo tipo di errore. Sta costruendo un file ma non permettendogli di farlo funzionare, genera solo un'eccezione. Non ho familiarità con le eccezioni, perché sono un principiante che mi aiuta gentilmente e in particolare mi fa notare l'errore che sto facendo.Eccezione nel thread "main" java.lang.StringIndexOutOfBoundsException: Indice di stringhe fuori intervallo: 11

public static void main(String args[]) { 
    String name = "Umer Hassan"; 
    String name1 = "Hassan Umer"; 
    char[] name2 = new char[name.length()]; 

    for (int j = 0; j <= name.length(); j++) { 
     for (int i = 0; i <= name.length(); i++) { 
      if (name.length() == name1.length()) { 
       if (name.charAt(i) == name1.charAt(i)) { 
        name2[i] = name1.charAt(i); 
       } 
      } 
     } 
    } 
} 

Quando eseguo il programma che mostra il seguente errore:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11 
    at java.lang.String.charAt(String.java:658) 
    at Anagram.main(Anagram.java:24) 

risposta

3

vostre variabili di controllo del ciclo (i/j) stanno andando fino aname.length() - che è un fuori dell'indice limiti (poiché l'indice massimo di una stringa/lista è len - 1 - ricorda che il primo indice è 0).

Provare a utilizzare i < name.length() e j < name.length() come le condizioni del ciclo.

2

si dovrebbe scrivere il ciclo per come

for (int i = 0; i < name.length(); i++) 

Gli indici nelle stringhe sono a base zero, come negli array, in modo da avere un range da 0 a lunghezza - 1. Si va alla lunghezza, che è fuori dai limiti.

0

provare questo:

public static void main(String args[]) { 
String name = "Umer Hassan"; 
String name1 = "Hassan Umer"; 
char[] name2 = new char[name.length()]; 

for (int j = 0; j < name.length(); j++ { 
    for (int i = 0; i < name.length(); i++) { 
     if (name.length() == name1.length()) { 
      if (name.charAt(i) == name1.charAt(j)) { 
       name2[i] = name1.charAt(j); 
      } 
     } 
    } 
} 

}

1
for (int i=0; i<=name.length();i++){ 

indici di stringa sono iniziando da 0.

Esempio:

String str = "abc"; 
int len = str.length(); //will return 3 

str.charAt(3); volontà getta StringIndexOutOfBoundsExceptioncharAt posizione di partenza è 0. Quindi il limite è length-1.

dovete cambiare il vostro ciclo for per for (int i=0; i<name.length();i++){

+0

'str.length' dovrebbe essere' str.length() '. – arshajii

Problemi correlati