We help IT Professionals succeed at work.

Java array

chima
chima asked
on
231 Views
Last Modified: 2017-04-10
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
Comment
Watch Question

mccarlIT Business Systems Analyst / Software Developer
CERTIFIED EXPERT
Top Expert 2015

Commented:
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.
Subrat (C++ windows/Linux)Software Engineer
CERTIFIED EXPERT

Commented:
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]);
Subrat (C++ windows/Linux)Software Engineer
CERTIFIED EXPERT

Commented:
sorry, Ur array having 4 elements. so replace accordingly in my above comment.

Author

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

Author

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

Author

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!

Author

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

CERTIFIED EXPERT

Commented:
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 ?
mccarlIT Business Systems Analyst / Software Developer
CERTIFIED EXPERT
Top Expert 2015

Commented:
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.
IT Business Systems Analyst / Software Developer
CERTIFIED EXPERT
Top Expert 2015
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions