aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Advance For Loop Dought Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Advance For Loop Dought" Watch "Advance For Loop Dought" New topic
Author

Advance For Loop Dought

Bhavesh Thakkar
Greenhorn

Joined: Mar 04, 2007
Posts: 21
Given:

int []arr = {1,2,3,4};
for ( int i : arr )
{
arr[i] = 0;
}
for ( int i : arr )
{
System.out.println(i);
}

and the options

a.Prints 0 1 2 3
b.Prints 0 0 0 0
c.Prints 0 0 3 0
d.Prints 0 2 0 0
e.Compile error
f.Runtime Exception occurs.

I think the answer should have been 'b' but the correct answer is 'c',can someone please tell me how the answer is 'c' and not 'b'.

Thanks in Advance.

Regards,
Bhavesh Thakkar
karnatam narendraprasad
Ranch Hand

Joined: Mar 01, 2007
Posts: 30
hi
the array values changes like this
i values are i=1 i=0 i=3 i=0
{1,2,3,4},{1,0,3,4},{0,0,3,4},{0,0,3,0},{0,0,3,0}
Qunfeng Wang
Ranch Hand

Joined: Jan 28, 2005
Posts: 426
Originally posted by karnatam narendraprasad:
hi
the array values changes like this
i values are i=1 i=0 i=3 i=0
{1,2,3,4},{1,0,3,4},{0,0,3,4},{0,0,3,0},{0,0,3,0}


Yes. I think the i in the for() loop is not the index of the array, instead, it's the element of the array.


To be or not to be. It's a question.
Rancy Chadha
Ranch Hand

Joined: Jul 12, 2006
Posts: 135
Hi Bhavesh,

Option c is the right answer.

int []arr = {1,2,3,4};
for ( int i : arr )
{
arr[i] = 0;
}
for ( int i : arr )
{
System.out.println(i);
}

Lets iterate the loop to see how we get this answer.
1) On first go, value of i is 1 (because enhanced for loop, makes the iterator iterate on the elements of the array or the collection) therefore arr[1] will become 0, so after this arr will be {1,0,3,4}
2) In second round, value of i is 0 because the next element of the array is 0 thus making arr[0] = 0 and now we have arr as {0,0,3,4}
3) On third iteration, value of i is 3 this will update arr[3] to 0 after which arr looks like {0,0,3,0}
4) In last iteration, again value of i is 0 so arr[0] will be 0 and it was already 0.
Thus when the loop is over final value in arr will be {0,0,3,0}

I hope this explains why choice c was right.

Thanks,
-Rancy


Thanks,<br />-Rancy
Bhavesh Thakkar
Greenhorn

Joined: Mar 04, 2007
Posts: 21
Hey thanks everyone i think my dought is clear now.

Regards,
Bhavesh Thakkar
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Advance For Loop Dought
 
Similar Threads
Arrays doubt
here is a question and i have a very similar code but i need to convert it
Doubt in Array
how to use array in array?
Arrays