views:

77

answers:

5

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)
+7  A: 

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

new String [5];
David Hedlund
Exactly. For convenience, here's the Arrays Tutorial: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html
BalusC
and 5th element is dayArray[4]
ziftech
A: 

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

Soufiane Hassou
A: 

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

mwalling
+2  A: 

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";
furtelwart
ah so my array was too small.i wanst aware of that.
OVERTONE
+2  A: 

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.

Ken