Multiple choice

public void foo( boolean a, boolean b) { if( a ) { System.out.println("A"); /* Line 5 / } else if(a && b) / Line 7 / { System.out.println( "A && B"); } else / Line 11 */ { if ( !b ) { System.out.println( "notB") ; } else { System.out.println( "ELSE" ) ; } } }

  1. If a is true and b is true then the output is "A && B"

  2. If a is true and b is false then the output is "notB"

  3. If a is false and b is true then the output is "ELSE"

  4. If a is false and b is false then the output is "ELSE"

Reveal answer Fill a bubble to check yourself
C Correct answer
Explanation

Option C is correct. The output is "ELSE". Only when a is false do the output lines after 11 get some chance of executing. Option A is wrong. The output is "A". When a is true, irrespective of the value of b, only the line 5 output will be executed. The condition at line 7 will never be evaluated (when a is true it will always be trapped by the line 12 condition) therefore the output will never be "A && B". Option B is wrong. The output is "A". When a is true, irrespective of the value of b, only the line 5 output will be executed. Option D is wrong. The output is "notB".