posted 10 years ago
The questions are as follows:
Class test{
public static void main(String arg[])
{
int x=0,y=0;
for(int z=0;z<5;z++)
{
if((++x>2)(++y>2))
{
x++;
}
}
System.out.println(x + " " +y);
}
}
I traced it as follows
z=0 x=1,y=1;
z=1 x=2,y=2;
z=3 x=3 ,y=2 (Here x is >2 so x++ executed and now x is 4);
z=4 x=5 y=2(Here also x+ executed and x is 6 now)
So o/p should be x=6and y=2 but why it is mentioned in answers as
x=8 and y=2?
One more is
Class test{
public static void main(String arg[])
{
int x=0,y=0;
for(int z=0;z<5;z++)
{
if((++x>2)&&(++y>2))
{
x++;
}
}
System.out.println(x + " " +y);
}
}
I traced it as follows
z=0 x=1 y=0
z=1 x=2 y=0
z=2 x=3 y=1(the && condition is true so x++ evaluated and x is now 4)
z=3 x=5 y=2(here x++ excecuted and x is 6 now)
z=4 x=7 y=3
so o/p should be x=7 and y=3 right?
but it is mentioned as x=6 and y=3
where I go wrong?
Class test{
public static void main(String arg[])
{
int x=0,y=0;
for(int z=0;z<5;z++)
{
if((++x>2)(++y>2))
{
x++;
}
}
System.out.println(x + " " +y);
}
}
I traced it as follows
z=0 x=1,y=1;
z=1 x=2,y=2;
z=3 x=3 ,y=2 (Here x is >2 so x++ executed and now x is 4);
z=4 x=5 y=2(Here also x+ executed and x is 6 now)
So o/p should be x=6and y=2 but why it is mentioned in answers as
x=8 and y=2?
One more is
Class test{
public static void main(String arg[])
{
int x=0,y=0;
for(int z=0;z<5;z++)
{
if((++x>2)&&(++y>2))
{
x++;
}
}
System.out.println(x + " " +y);
}
}
I traced it as follows
z=0 x=1 y=0
z=1 x=2 y=0
z=2 x=3 y=1(the && condition is true so x++ evaluated and x is now 4)
z=3 x=5 y=2(here x++ excecuted and x is 6 now)
z=4 x=7 y=3
so o/p should be x=7 and y=3 right?
but it is mentioned as x=6 and y=3
where I go wrong?
posted 10 years ago
Try adding some println statements to show what the code is doing. For example...
[ July 19, 2007: Message edited by: marc weber ]
[ July 19, 2007: Message edited by: marc weber ]
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
posted 10 years ago
At z=2, you say that "&& condition is true", but the y>2 condition actually returns false for another two iterations of the loop. The if's block does not execute until z=4.
I traced it as follows
z=0 x=1 y=0
z=1 x=2 y=0
z=2 x=3 y=1(the && condition is true so x++ evaluated and x is now 4)
z=3 x=5 y=2(here x++ excecuted and x is 6 now)
z=4 x=7 y=3
so o/p should be x=7 and y=3 right?
but it is mentioned as x=6 and y=3
At z=2, you say that "&& condition is true", but the y>2 condition actually returns false for another two iterations of the loop. The if's block does not execute until z=4.
Les Hayden
vatsalya rao
Ranch Hand
Posts: 63
posted 10 years ago
Hail all!
It's a bit confusing this thing, but i got to the following conclusion:
z: 0 x: 1 y: 0 > in the if condition, x is incremented
z: 1 x: 2 y: 0 > again, the same thing
z: 2 x: 3 y: 1 > x is incremented again, so the first part of the teste is true, making y also be incremented (just remembering here that y was not incremented before because && does not check the second statement if the first is false)
z: 3 x: 4 y: 2 > same situation explained in the las step
z: 4 x: 6 y: 3 > now we have the if scope executed so x is incremented 2 times.
Think its that!
Take care,
It's a bit confusing this thing, but i got to the following conclusion:
z: 0 x: 1 y: 0 > in the if condition, x is incremented
z: 1 x: 2 y: 0 > again, the same thing
z: 2 x: 3 y: 1 > x is incremented again, so the first part of the teste is true, making y also be incremented (just remembering here that y was not incremented before because && does not check the second statement if the first is false)
z: 3 x: 4 y: 2 > same situation explained in the las step
z: 4 x: 6 y: 3 > now we have the if scope executed so x is incremented 2 times.
Think its that!
Take care,
<br />Guerra
Can't .... do .... plaid .... So I did this tiny ad instead:
The WEB SERVICES and JAXRS Course
https://coderanch.com/t/690789/WEBSERVICESJAXRS
