Java array

Hello
I hate asking this question because it is so simple, but it does not work.  The way it is shown below does work.
Next I want to initialize and print the array within the for loop, but it does not like the System.out.println(a[i]);

public class ArrayTenElements {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//int i=4;
		int a[]= new int[4];
		a[0]=0;
		a[1]=1;
		a[2]=2;
		a[3]=3;
		
		for(int i=0;i<=3;i++)
		{
		//int a[]= new int[i]; 
		
		System.out.println(a[i]);
		}

		
		/*for(int i=0;i<=9;i++)
		{
			//a[i];
			System.out.println(a[5]);
			//i--;
		}*/
	}

}

Open in new window


What am I missing.  Or is it that it can't be done?
Thanks
chimaAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mccarlIT Business Systems Analyst / Software DeveloperCommented:
A bit hard to understand what's going on here, so let me break a few things down. Firstly the code..

Are you saying that the code above works (which I agree with) but if you uncomment line 14 it fails? If so, then yes, because with line 14 uncommented, what you are asking it to do is...

- Loop around 4 times (i from 0 to 3 inclusive)
  - For each loop, create an array whose size is determined from the index i
  - Print out the ith element from the array just created

The problem is that on the first loop, i = 0 so you create a 0 length array, but then you attempt to print the array element with index 0 (which due to 0 based index is the FIRST element). But there is no first element because it has 0 length, i.e. there are 0 elements in the array, and so it fails on IndexOutOfBounds exception.

Even if it got past this first loop, the second would create an array of size = 1, but then you try to print the a[1] element which is the SECOND element but there is only 1 element, so it still throws an exception.



So, now to what you are trying to do... It not clear from "Next I want to initialize and print the array within the for loop" EXACTLY what you are trying to get it to do. If you can elaborate on this, then we can help further.
1
Subrat (C++ windows/Linux)Software EngineerCommented:
you are crossing the array bound.
i<=9 is wrong. as your array having only 5 elements.
you should access from 0 to 4.

make i<=4
and in print statement, make it a[i]
System.out.println(a[i]);
0
Subrat (C++ windows/Linux)Software EngineerCommented:
sorry, Ur array having 4 elements. so replace accordingly in my above comment.
0
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

chimaAuthor Commented:
Allow me to ask the question this way; why is it that I can't create and initialize the array inside of the for loop?
The commented out section below works (last night I realized I was not assigning a value to the array cells);

public class ArrayTenElements {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//int i=4;
		//int a[]= new int[4];
		//a[0]=0;
		//a[1]=1;
		//a[2]=2;
		//a[3]=3;
		
		/*for(int i=0;i<=3;i++)
		{
		//int a[]= new int[i]; 
		a[0]=0;
		a[1]=1;
		a[2]=2;
		a[3]=3;
		//a[i]=i;
		System.out.println(a[i]);
		}*/
		
		for(int i=0;i<=3;i++)
		{
			int a[]= new int[i];
			a[i]=i;
			System.out.println(a[i]);
		}
	}
}

Open in new window

0
chimaAuthor Commented:
Correction; this works

		for(int i=0;i<=3;i++)
		{
		int a[]= new int[4]; 
		a[i]=i;
		//a[0]=0;
		//a[1]=1;
		//a[2]=2;
		//a[3]=3;
		System.out.println(a[i]);
		}

Open in new window


So int[] was the problem
0
chimaAuthor Commented:
Strange, in my last entry I had this "So XXX was the problem"  outside of the code section, and Expert-Exchange was not allowing me to submit my comment.  And the same here; I have to put it inside the ????! Wow!
0
chimaAuthor Commented:
ling 3 above could not use an "i"  
This code is better;
package Arrays;

public class ArrayTenElements {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int j=10; // 10 elements
				
		for(int i=0;i<=(j-1);i++)
		{
		int a[]= new int[j]; 
		a[i]=i;
		System.out.println(a[i]);
		}
	}
}

Open in new window

0
krakatoaCommented:
As has been said, it isn't clear what you want to do, but what you are doing at the moment simply initialises one element of the array at a time, in step with the loop counter - so you have 9 empty elements, and only ever print out one of them. So that surely can't be what you want ?
0
mccarlIT Business Systems Analyst / Software DeveloperCommented:
And the same here; I have to put it inside the ????! Wow!

Yes, if you were trying to say "So int[ i] was the problem", you will run into trouble because "i" inside square brackets is interpreted as a formatting instruction and if you don't have a corresponding end tag, it will complain. The way I get around it is as above, put a space either side of the i

As for the code, like krakatoa said, you need to explain (in English, not code) what it is that you are trying to do.
0
mccarlIT Business Systems Analyst / Software DeveloperCommented:
Ooooh, the error message that I just got about the i tag, just told me another way to do it... put a close bracket just after the open to escape it. Let me try...

int a[] = new int[i];

I typed this...
int a[]] = new int[]i];

Open in new window


Cool!
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.