Java Programming - Operators and Assignments - Discussion

Discussion Forum : Operators and Assignments - Finding the output (Q.No. 8)
8.
What will be the output of the program?
class Test 
{
    public static void main(String [] args) 
    {
        int x= 0;
        int y= 0;
        for (int z = 0; z < 5; z++) 
        {
            if (( ++x > 2 ) || (++y > 2)) 
            {
                x++;
            }
        }
    System.out.println(x + " " + y);
    }
}
5 3
8 2
8 3
8 5
Answer: Option
Explanation:

The first two iterations of the for loop both x and y are incremented. On the third iteration x is incremented, and for the first time becomes greater than 2. The short circuit or operator || keeps y from ever being incremented again and x is incremented twice on each of the last three iterations.

Discussion:
20 comments Page 1 of 2.

Maheshthakuri said:   1 decade ago
1st Iteration
z =0
x=1 y=1

2nd Iteration
z=1
x=2 y=2

3rd Iteration
z=2
x =3 and its greater than 2. Go inside the if condition
x become 4
y remain 2 as coz of || operator(if one condition true other is ignored)

4th Iteration
z=3
again condition true
x become 6 coz of ++x and x++.
y remain same as stated above

5th Iteration
z=4
again condition true(x>2)
x become 8 now
y remain same as stated in iteration 3rd

6th Iteration
z = 5. condition become false coz z is not less than 5

output : 8 and 2

Program terminate
(2)

Anand patil m said:   9 years ago
Enter a number to find fact.
3
n store 3
if(3<0)
no so 3 is not a negative number
then else execute
for()

The first iteration take 1 value is less then equal 3
yes
fact=1*1
fact store 1
next iteration
2is less then equal to 3
yes
then
fact=1*2;
fact store 2
3rd iteration
3 is less then equal to3
yes then
fact=2*3
then fact store 6.

fourth iteration fail then print 6 value.

Sami said:   7 months ago
@All.

Here, || (OR) operator short-circuits, the second part (++y > 2) is not evaluated?
Yet y still incremented.
Then the result should be 8 5.

Arham said:   3 years ago
Thank you for explaining @Arun.

Sanjay kumar said:   5 years ago
Thanks @Maheshthakuri.

Mayur Patil said:   6 years ago
Thanks @Maheshthakuri.

Neha said:   7 years ago
Thanks @Maheshthakuri.

Priyanka said:   8 years ago
Thank You @Arun.

Malathi said:   8 years ago
Thanks @Maheshthakuri.

Saurabh said:   8 years ago
In simple word, in Logical OR, if the first condition is true then second will be ignored.

So here the condition of 'y' is checked only for 2 times.


Post your comments here:

Your comments will be displayed after verification.