Dave555
Dave555

Reputation: 167

Java Arrays Index out of Bounds

I'm just starting a unit in Arrays and I was given some example code to look off of for this very basic introductory program for Arrays. Essentially all I have to do is make two arrays that ask for the temperature for that day of the week. After collecting the info it will simply spit it back out in a string like this.

The temperature on Monday was 16 degrees

The temperature on Tuesday was 18 degrees

... etc.

From what I understood from the example code I received I am doing everything correctly. But when try to run the program (in Netbeans) I get this error.

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 at temperatures.Temperatures.main(Temperatures.java:27) Java Result: 1"

Here is the code:

public static void main(String[] args)throws IOException {
        // TODO code application logic here
        BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
        String temp[]= new String[7];
        String day[]= new String[7];
        day[1]=("Monday");
        day[2]=("Tuesday");
        day[3]=("Wednesday");
        day[4]=("Thursday");
        day[5]=("Friday");
        day[6]=("Saturday");
        day[7]=("Sunday");
        for (int i=0; i <7; i++){
            System.out.println("Please enter the temperature for" + day[i]);
            temp[i]=br.readLine();
        }
        for (int i=0; i <7; i++){
        System.out.println("The high temperature on " + day[i]+ " was "+ temp[i]);
        }
    }
}

Upvotes: 6

Views: 2508

Answers (5)

Theja
Theja

Reputation: 772

If an Array is is 'N' then the boundaries of that array is 0 and "N-1". In your case the array Boundaries are 0 and 6. But you are tring to write value into array[7] which is not exists.

Upvotes: 0

PeakGen
PeakGen

Reputation: 23035

That is because your array starts from 1, ends from 7. If your array length is 7, the last index should be one less than tyhe array length. In your case, array sees that you have declared it for 7 elements, but inserted 8 positions. So, start array from 0, end it from 6

Upvotes: 0

hekomobile
hekomobile

Reputation: 1388

The arrays starter in 0,

try this

    day[0]=("Monday");
    day[1]=("Tuesday");
    day[2]=("Wednesday");
    day[3]=("Thursday");
    day[4]=("Friday");
    day[5]=("Saturday");
    day[6]=("Sunday");

and should you change this loop

for(int i=0; i < 7; i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

for this

for(int i=0; i < day.length(); i++){
        System.out.println("Please enter the temperature for" + day[i]);
        temp[i]=br.readLine();
    }

I hope help you.

Upvotes: 1

kentcdodds
kentcdodds

Reputation: 29091

Arrays begin at zero (<- that's a link to an article which explains why). So assigning your first value as day[1]=("Monday"); is the issue, it should be day[0]=("Monday"); Hope that helps

Upvotes: 6

Affe
Affe

Reputation: 47994

Arrays in Java start at position 0, not position 1. So if you initialize it to a size of 7, Monday is 0 and Sunday is 6. There is no index 7 available.

Upvotes: 4

Related Questions