Java Programming - Flow Control - Discussion

Discussion Forum : Flow Control - Finding the output (Q.No. 5)
5.
What will be the output of the program?
public class If2 
{
    static boolean b1, b2;
    public static void main(String [] args) 
    {
        int x = 0;
        if ( !b1 ) /* Line 7 */
        {
            if ( !b2 ) /* Line 9 */
            {
                b1 = true;
                x++;
                if ( 5 > 6 ) 
                {
                    x++;
                }
                if ( !b1 ) 
                    x = x + 10;
                else if ( b2 = true ) /* Line 19 */
                    x = x + 100;
                else if ( b1 | b2 ) /* Line 21 */
                    x = x + 1000;
            }
        }
        System.out.println(x);
    }
}
0
1
101
111
Answer: Option
Explanation:

As instance variables, b1 and b2 are initialized to false. The if tests on lines 7 and 9 are successful so b1 is set to true and x is incremented. The next if test to succeed is on line 19 (note that the code is not testing to see if b2 is true, it is setting b2 to be true). Since line 19 was successful, subsequent else-if's (line 21) will be skipped.

Discussion:
24 comments Page 2 of 3.

Pandu said:   1 decade ago
Can we assign a value to a variable in if condition that mean if (x=5). Is it applicable or not?

Raman said:   1 decade ago
If (!b2) //If I change b2 to b1 then why execute this loop? Please

x = x+10;

else if (b1 = true) /*Line 19*/.

x = x + 100;
else if (b1 | b2) /*Line 21*/
x = x + 1000;

Udesha said:   10 years ago
What is the meaning of "if (!b1)"? What does it do?

Don't we have to use a condition inside those parentheses of the if condition?

Yash maheshwari said:   10 years ago
Can any one explain it step by step?

Divesh Singla said:   10 years ago
if ( 5 > 6 )
{
x++;
}
if ( !b1 )
x = x + 10;

Why this part is not considered?

Devyansh Singla said:   10 years ago
@Boopathy according to my understanding.

If (5 > 6) false 5 is less than 6 so it will move to next if where b1 is already true above so it will move to last loop.

{
x++;
}
if ( !b1 )
x = x + 10;

Sujala said:   10 years ago
If(!b2) returns true.

It is similar to !(false).

In condition if (b2 = true) at this moment true is assigned to b2 and returns true value.

But we can't able to assign if (i = 5) //it is error.

At any instance if condition returns either true or false only.

So the statements.

x = x+100; //x = 1+100.

x = 101 is the right answer.
(1)

Geeta said:   9 years ago
A question is wrong. Kindly correct it at.

X = x + 1000.

Kishan said:   9 years ago
x must be 1001, assignment is not allowed inside an if statement in Java .

Yami said:   9 years ago
This will compile? Explain.

"else if (b2 = true) /* Line 19 */ ".

b2 = true ?
(1)


Post your comments here:

Your comments will be displayed after verification.