This week's book giveaway is in the Design forum.We're giving away four copies of Building Microservices and have Sam Newman on-line!See this thread for details.
Big Moose Saloon
 Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies Register / Login Win a copy of Building Microservices this week in the Design forum!

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'.

Regards,
Bhavesh Thakkar
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: 434
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.
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’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com