2011-01-11 95 views
0

在下面的代碼給出了一個「java.lang.ArrayIndexOutOfBoundsException:2」的錯誤,我不明白爲什麼,如果我改變「emailArray [i] [2] = messageContent [i]「到」emailArray [i] [1] = messageContent [i]「它的工作原理是我的佈局爲2d數組錯誤?快速幫助2n陣列上的ArrayIndexOutOfBoundsException

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; 
} 

回答

3

在這裏定義一個二維數組與尺寸message.length by 2

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

在這裏,您嘗試訪問個行的第3列:

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

但沒有第三列,你已經定義它有2列。

數組在Java中爲零索引,這意味着您使用0訪問數組的第一個元素,第二個元素爲1等等。基本上,如果你想3個元素,那麼你就需要定義emailArray爲:

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

啊,這讓我覺得有點傻,感謝花花公子所有的作品現在 – Rhys 2011-01-11 02:47:49