OVERTONE
OVERTONE

Reputation: 12207

Problem with exceptions and arrays

Can't really understand what's going wrong here?

It's just a simple exception with an array out of bounds.

public class Days
{
    public static void main (String args[])
    {
        String[] dayArray = new String [4];
        {
            dayArray [0] = "monday";
            dayArray [1] = "tuesday";
            dayArray [2] = "wednesday";
            dayArray [3] = "Thursday";
            dayArray [4] = "Friday";

            try
            {
                System.out.println("The day is " + dayArray[5]);
            }
            catch(ArrayIndexOutOfBoundsException Q)
            {
                System.out.println(" invalid");
                Q.getStackTrace();
            }
            System.out.println("End Of Program");
        }
    }
}

Does anybody have any ideas as too why this won't run? I'm getting the error:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at Days.main(Days.java:14)

Upvotes: 0

Views: 144

Answers (5)

David Hedlund
David Hedlund

Reputation: 129832

You should declare it as capable of 5 items, not 4, in its declaration.

new String [5];

Upvotes: 7

Ken
Ken

Reputation: 814

When appropriate, let the compiler do the counting for you:

String[] dayArray = {
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
};

This way, you can add or remove elements without having to change the array length in another place. Less typing, too.

Upvotes: 2

guerda
guerda

Reputation: 24069

Array are limited on creation. In your example, it has a size of 4 fields.
With a 0-indexed array it means you can access these fields, not any more:

dayArray [0] = "monday";
dayArray [1] = "tuesday";
dayArray [2] = "wednesday";
dayArray [3] = "Thursday";

Upvotes: 2

mwalling
mwalling

Reputation: 1753

You're defining five elements for a four element array. Java uses zero based indexes.

Upvotes: 0

Soufiane Hassou
Soufiane Hassou

Reputation: 17750

You array has a size of 4, and you are adding 5 elements.

Upvotes: 0

Related Questions