Java Programming - Flow Control - Discussion

Discussion Forum : Flow Control - Finding the output (Q.No. 7)
7.
What will be the output of the program?
public class If1 
{
    static boolean b;
    public static void main(String [] args) 
    {
        short hand = 42;
        if ( hand < 50 && !b ) /* Line 7 */
            hand++;
        if ( hand > 50 );     /* Line 9 */
        else if ( hand > 40 ) 
        {
            hand += 7;
            hand++;    
        }
        else
            --hand;
        System.out.println(hand);
    }
}
41
42
50
51
Answer: Option
Explanation:

In Java, boolean instance variables are initialized to false, so the if test on line 7 is true and hand is incremented. Line 9 is legal syntax, a do nothing statement. The else-if is true so hand has 7 added to it and is then incremented.

Discussion:
13 comments Page 1 of 2.

Sonam said:   1 decade ago
The 'if' statement on line 7 will return true hence hand will be incremented by 1,so its value will be 43.Then,if statement on line 9 won't be executed because that condition will be false so 'else if' will execute so value of hand will be 43+7+1=51.
So,answer will be 51.
(1)

Ankur Varshney said:   1 decade ago
if ( hand > 50 );
This statement is not legal .so according to me this is error

Sonu said:   1 decade ago
How line 7 can be true with one '&' operator? Can somebody explain this.

Sangeetha said:   1 decade ago
By default is boolean instance variable are initialized to false?

Cloud Nine said:   1 decade ago
@Sonu, That is the unary AND(^) operator.

A B (A^B)
0 0 0
0 1 0
1 0 0
1 1 1

Where, 0=false, 1=true.

Sravan said:   1 decade ago
In line 9 as it is a legal statement why it would go for else if?

Kaushik Mitra said:   1 decade ago
@Sravan, it is because flow goes to 'else if' part if the condition in 'if' statement is not satisfied.

Bhosale suman said:   1 decade ago
!b return true.

50&&!b return 1 = true.

If (42> 50&&!b) return false.

How line 7 can be true?

Ranga said:   1 decade ago
What is the correct answer?

Srinivas said:   9 years ago
!b true because in place of
if (42>50&&!b) return true.

It means !b before ! default is False that's why that is true?


Post your comments here:

Your comments will be displayed after verification.