user4099400
user4099400

Reputation:

Array counting by 5's and 3's then adding the arrays

I have 3 arrays iX, iY, and iZ with each holding 20 integers.

iX goes up by 5, iY goes up by 3, and iZ is the sum of both.

for (int i=5; i <=iX.length; i+=5)
{
    iX[i] = i;
    System.out.print (i + "\n");
}

for (int j=3; j <iY.length; j+=3)
{
    iY[j] = j;
}
for (int k=0; k < iZ.length; k++)
{
    iZ[k] = iX[k]+iY[k];
}

When I run it I get: "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20 at Quiz10RTN.main(Quiz10RTN.java:61)"

Line 61 is : iX[i] = i;

I can't seem to get it to even print out 20 numbers, because it seems to be treating my limit of 20 integers as a range to stop at. Any help would be great, Thanks.

Upvotes: 0

Views: 416

Answers (3)

Ruchira Gayan Ranaweera
Ruchira Gayan Ranaweera

Reputation: 35557

Issue is here

for (int i=5; i <=iX.length; i+=5)
                 ^

There is no index match with iX.length in your array.

index of array start with 0, So if size of array is n, then you only have indexes from 0 to n-1.

You can use following to avoid the exception. But you need to think some other way to archive your goal.

for (int i=5; i <iX.length; i+=5)

Edit: for your comment I was trying to print out "5, 10, 15, 20, 25...etc"

You can try something like following

for (int i=0; i <iX.length; i++) {
   iX[i]=(i+1)*5; // now your array become 5,10,15,...      
}

Upvotes: 3

Elliott Frisch
Elliott Frisch

Reputation: 201447

You aren't using the array indexes properly (they must be incremental). You might also use Arrays.toString(int[]) to print your arrays. I believe you wanted something like

int[] iX = new int[20];
int[] iY = new int[20];
int[] iZ = new int[20];
int valfive = 5; // <-- our five increments.
int valthree = 3; // <-- the three increments.
for (int i = 0; i < iX.length; i++) {
    iX[i] = valfive;
    iY[i] = valthree;
    iZ[i] = valfive + valthree;
    valfive += 5; // <-- add 5
    valthree += 3; // <-- add 3
}
System.out.println("Multiples of five: " + Arrays.toString(iX));
System.out.println("Multiples of three: " + Arrays.toString(iY));
System.out.println("Sums of fives and threes: " + Arrays.toString(iZ));

Output is (formatted for SO)

Multiples of five: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 
        75, 80, 85, 90, 95, 100]
Multiples of three: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 
        45, 48, 51, 54, 57, 60]
Sums of fives and threes: [8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 
        104, 112, 120, 128, 136, 144, 152, 160]

Upvotes: 0

AndyL
AndyL

Reputation: 380

You are confusing your array indices with the values you are storing in the arrays.

So, for example, if you want your iX array to contain the 20 integers 5, 10, 15,...100, your first loop should look like:

      for (int i=0; i < iX.length; ++i)
      {
          iX[i] = (i + 1) * 5;
          System.out.print (iX[i] + "\n");
      }          

Upvotes: 0

Related Questions