Categories: MSDN / DotNet / Java / Scripts / Linux / PHP Ask - La ask - La Answer

ArrayIndexOutOfBounds problem

final int[][]p=
{
{1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10},
{11,12,13,14,15,16,17,18,19,20},
{21,22,23,24,25,26,27,28,29,30},
{31,32,33,34,35,36,37,38,39,40},
{41,42,43,44,45,46,47,48,49,50},
{51,52,53,54,55,56,57,58,59,60},
{61,62,63,64,65,66,67,68,69,70},
{71,72,73,74,75,76,77,78,79,80},
{81,82,83,84,85,86,87,88,89,90},
{91,92,93,94,95,96,97,98,99,100}
};
int aa=0;
int bb=0;
int total[];

total=new int[100];

while(aa!=10)
{

for(int ds=aa;ds<10;ds++)
{
for(int sd=bb;sd<bb+2;sd++)
{
System.out.println(p[ds][sd]+" ");
}
}
bb=bb+2;
}

The arra index out of bound occurs. what's wrong?can anyone fix it for me?
[882 byte] By [denny_k] at [2007-11-11 9:51:31]
# 1 Re: ArrayIndexOutOfBounds problem
yeah you send me the wrong code in your email... but now i can tell you what's wrong. your aa never changes... so first of all you got an infinite loop (mentioned that in your email already) then secondly you increment your bb by two... your inner for loop has the condition: sd<bb+2... so bb is your upper border. because you have an infinite loop you increase bb infinitly. that means your border is infinite for sd (because of the already mentioned restriction sd<bb+2)... so sd grows and grows... till bang!!! your array throws the outOfBoundsException on that line

System.out.println(p[ds][sd]+" ");

because p[1][11] for example doesn't exist (your array is defined as new int [10][10] so you can have values from 0 to 9 only). hope you understand that ;-)
marble at 2007-11-11 22:32:19 >
# 2 Re: ArrayIndexOutOfBounds problem
i understand now. ^^
denny_k at 2007-11-11 22:33:24 >