0

In the code below the for loop is giving an "java.lang.ArrayIndexOutOfBoundsException: 2" error, i can not see why, if i change "emailArray[i][2] = messageContent[i]" to "emailArray[i][1] = messageContent[i]" it works, is my layout for the 2d array wrong?

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

1 Answer 1

3

Here you define a 2D array with dimensions message.length by 2:

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

Here you try to access the i-th row's 3rd column:

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

But there is no 3rd column, you've defined it to have 2 columns.

Arrays are zero-indexed in Java, this means you access the 1st element of an array using 0, the 2nd element as 1 and so on. Basically, if you want 3 elements, then you need to define emailArray as:

emailArray = new String[message.length][3];
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.