2011-01-11 4 views
0

Im folgenden Code gibt die for-Schleife einen Fehler "java.lang.ArrayIndexOutOfBoundsException: 2", ich kann nicht sehen, warum, wenn ich ändern "emailArray [i] [2] = messageContent [i] "to" emailArray [i] [1] = messageContent [i] "es funktioniert, ist mein Layout für das 2D-Array falsch?Schnelle Hilfe mit ArrayIndexOutOfBoundsException auf 2d-Array

public String[][] fetchEmails() throws Exception { 

     String[][] emailArray; 

     Properties props = new Properties(); 

     Session session = Session.getDefaultInstance(props, null); 

     Store store = session.getStore("imaps"); 

     store.connect("pop.gmail.com", "******@googlemail.com", "********"); 
     System.out.println(store); 


     Folder folder = store.getFolder("Inbox"); 

     folder.open(Folder.READ_ONLY); 

     int howmuch = folder.getMessageCount(); 
     Message message[] = folder.getMessages(); 

     String[] messageContent = new String[message.length]; 

     messageContent = convertContent(message); 

     emailArray = new String[message.length][2];   

     for (int i = 0; i<message.length; i++){ 
      emailArray[i][0] = message[i].getFrom()[0].toString(); 
      emailArray[i][1] = message[i].getSubject().toString(); 
      emailArray[i][2] = messageContent[i]; 
     } 

    folder.close(false); 
    store.close(); 

    return emailArray; 
} 

Antwort

3

Hier definieren Sie ein 2D-Array mit Dimensionen message.length by 2:

emailArray = new String[message.length][2]; 

Hier versuchen Sie die i dritte Spalte ten Zeile zugreifen:

emailArray[i][2] = messageContent[i]; 

Aber es gibt keine 3. Spalte, Sie haben definiert, dass es 2 Spalten hat.

Arrays sind in Java null-indiziert, das heißt, Sie greifen auf das 1. Element eines Arrays mit 0, das 2. Element als 1 und so weiter. Grundsätzlich, wenn Sie drei Elemente wollen, dann müssen Sie definieren emailArray als:

emailArray = new String[message.length][3]; 
+0

ah, die mich ein bisschen dumm fühlen, dank Geck alles funktioniert jetzt – Rhys

Verwandte Themen