Need Complete Explanation? Read this
The index of an Array always starts from 0. Therefore as you are having 64 elements in your array then their indexes will be from 0 to 63. If you want to access the 64th element then you will have to do it by a[63].
Now if we look at your code, then you have written your condition to be for(int i=1;i<=a.length;i++) here a.length will return you the actual length of the array which is 64.
Two things are happening here:
- As you start the index from 1 i.e. i=1therefore you are skipping the very first element of your array which will be at the0thindex.
- In the last it is trying to access the a[64]element which will come out to be the65thelement of the array. But your array contains only 64 elements. Thus you getArrayIndexOutOfBoundsException.
The correct way to iterate an array with for loop would be:
for(int i=0;i < a.length;i++)
The index starting from 0 and going to < array.length.