2011-01-11 10 views
0

以下のコードでは、「java.lang.ArrayIndexOutOfBoundsException:2」というエラーが表示されますが、「emailArray [i] [2] = messageContentを変更すると、 [i] "to" emailArray [i] [1] = messageContent [i] "2d配列のレイアウトが間違っていますか?2次元配列の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との2次元配列を定義します。

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

あなたは行目の3列アクセスしよう:

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

をしかし、誰があります3列目は、2列と定義しています。

配列はJavaでゼロインデックス化されているため、01などの2番目の要素を使用して配列の1番目の要素にアクセスすることを意味します。今

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

私は少し愚かな感じさせるああ、おかげで男のすべての作品:あなたは3つの要素が必要な場合は、基本的に、そしてあなたにemailArrayを定義する必要があります – Rhys