Java Programming - Assertions - Discussion

Discussion Forum : Assertions - Finding the output (Q.No. 5)
5.
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?
Line 11
Line 12
Line 14
Line 22
Answer: Option
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.

Discussion:
2 comments Page 1 of 1.

Hiti said:   5 years ago
At line 12 the value of z is changed by the method and as per the definition of assertion which says "Assertion is a Boolean statement" so option B should be the right answer?

Dilan said:   9 years ago
What about the value returned by the foo function?

Post your comments here:

Your comments will be displayed after verification.