0

I am a beginner to programming. I'm a few weeks into my first programming class, so please bear with me. I am not a person to ask for help, so I have searched for an answer extensively with no luck. This is also my first time posting anything in any type of forum, so if my question structure is off I'm sorry and I will correct for future posts.

This is the question I am tackling:

Write a program that declares an array "alpha" of 50 elements of type "double". Initialize the array so that the first 25 elements are equal to the square of the index variable and the last 25 elements are equal to three times the index variable. Output the array so that 10 elements per line are printed.

This is what I got while running the program.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:50 on line 23 

And this is the code I'm working on

import java.util.*;
import java.lang.*;
public class ProgrammingProblem5_4
{
    public static void main(String[] args)
    { 
        int i=0;
        int count=0;
        double[] alpha = new double[50];


        if (i >= 25)
            alpha[i] = 3*i;
        System.out.print(alpha[i]+ " ");   
        count++;
        if (count==10) {
            System.out.println("/n");
            count=0;
        }
    }
}
}

Thank you in advance for any help. I'm not looking to have this done for me, I'm just stuck and need help finding my way.

The Guy with The Hat
  • 10,836
  • 8
  • 57
  • 75
user3285999
  • 39
  • 1
  • 1
  • 2

4 Answers4

2

i don't see any for loop to initalize the variables.you can do something like this.

for(i=0;i<50;i++){
 /* Code which is necessary with a simple if statement*/

   }
user3154554
  • 55
  • 1
  • 9
  • This is what I have for my for statement for some reason it paste with the rest of the code. for (i=0; i< alpha.length; i++) alpha[i] =0; – user3285999 Feb 08 '14 at 18:58
1

ArrayIndexOutOfBoundsException in simple words is -> you have 10 students in your class (int array size 10) and you want to view the value of the 11th student (a student who does not exist)

if you make this int i[3] then i takes values i[0] i[1] i[2]

for your problem try this code structure

double[] array = new double[50];

    for (int i = 0; i < 24; i++) {

    }

    for (int j = 25; j < 50; j++) {

    }
Srinath Ganesh
  • 2,496
  • 2
  • 30
  • 60
0

First you should learn about loops, in this case most suitable is for loop. For instance let's initialize whole table with increasing values starting with 0:

final int SIZE = 10;
int[] array = new int[SIZE];
for (int i = 0; i < SIZE; i++) {
    array[i] = i;
}

Now you can modify it to initialize your table with values as per your assignment. But what happen if you replace condition i < SIZE with i < 11? Well, you will get IndexOutOfBoundException, as you try to access (at some point) an object under index 10, but the highest index in 10-element array is 9. So you are trying, in other words, to find friend's home with number 11, but there are only 10 houses in the street.

In case of the code you presented, well, there must be more of it, as you can not get this error (exception) from that code.

Cromax
  • 1,822
  • 1
  • 23
  • 35
  • thank you I understand that the highest index of 10 is 9, my problem was I was confused and was counting 0 so I thought there still were 10 elements – user3285999 Feb 08 '14 at 19:41
0

I still remember the first weeks of my programming courses and I totally understand how you feel. Here is the code that solves your problem. In order to learn from this answer, try to run it adding several 'print' in the loop, so you can see the progress of the variables.

import java.util.*;
import java.lang.*;

public class foo
{

   public static void main(String[] args)
   { 
      double[] alpha = new double[50];
      int count = 0;

      for (int i=0; i<50; i++)
      {
          // System.out.print("variable i = " + i + "\n");
          if (i < 25)
          {
                alpha[i] = i*i;
          }
          else {
                alpha[i] = 3*i;
          }

          if (count < 10)
          {
            System.out.print(alpha[i]+ " "); 
          }  
          else {
            System.out.print("\n"); 
            System.out.print(alpha[i]+ " "); 
            count = 0;
          }

          count++;
      }

      System.out.print("\n"); 

    }
}
Marc Manzano
  • 158
  • 7
  • Thank you this is going to help a lot I'm working to become a programmer it's just my first class after years of being out school. I see now what I was doing wrong. – user3285999 Feb 08 '14 at 19:48