Java Programming - Assertions - Discussion

1. 

public class Test2 
{
    public static int x;
    public static int foo(int y) 
    {
        return y * 2;
    }
    public static void main(String [] args) 
    {
        int z = 5;
        assert z > 0; /* Line 11 */
        assert z > 2: foo(z); /* Line 12 */
        if ( z < 7 )
            assert z > 4; /* Line 14 */

        switch (z) 
        {
            case 4: System.out.println("4 ");
            case 5: System.out.println("5 ");
            default: assert z < 10;
        }

        if ( z < 10 )
            assert z > 4: z++; /* Line 22 */
        System.out.println(z);
    }
}
which line is an example of an inappropriate use of assertions?

[A]. Line 11
[B]. Line 12
[C]. Line 14
[D]. Line 22

Answer: Option D

Explanation:

Assert statements should not cause side effects. Line 22 changes the value of z if the assert statement is false.

Option A is fine; a second expression in an assert statement is not required.

Option B is fine because it is perfectly acceptable to call a method with the second expression of an assert statement.

Option C is fine because it is proper to call an assert statement conditionally.


Starrer said: (Sep 13, 2014)  
Why the answer is 22 and not 11?

Nikola said: (Sep 16, 2015)  
Why the answer is 22 and not 12? At line 12 also z is changed?

Post your comments here:

Name *:

Email   : (optional)

» Your comments will be displayed only after manual approval.