which line is an example of an inappropriate use of assertions?
E]Line 18 answer is E. Assert statements should not cause side effects. Line 18 changes the value of z if the assert statement is false. but i think line 15 is also wrong bcause value of z is 5 & there is no break keyword in the switch stmt,so it will go to default stmt of switch after case 5.& then it will give error.i think author forgot to use break over there.And one more confusion is that z is not the final variable then how can it used in switch stmt of above programme.
While I agree that the lack of break statement is odd, it doesn't really make the assertion in line 15 incorrect. That assertion doesn't fail in the case you described because z IS less than 10 (which is what's being asserted).
As for the variable not being final: that's not a requirement for use in a switch statement. What you're thinking of is that the values in the CASE statements must be constant values. In this example, those values are 4 and 5, which are constants. If you defined a variable:
int FOO = 5;
...and used it in place of the value 5 in the case statement, it would not compile because FOO is not constant.
Hope that helps.
Co-Author of <a href="http://www.oreilly.com/catalog/jswing2" target="_blank" rel="nofollow">Java Swing</a><br />Co-Creator of <a href="http://www.sun.com/training/catalog/courses/CX-310-055.xml" target="_blank" rel="nofollow">SCJP 5.0</a> and <a href="http://www.sun.com/training/certification/java/associate_beta.xml" target="_blank" rel="nofollow">SCJA</a> exams
There should not be any side effects when you are using assertions. Bcoz assertions can be enabled and disabled, z++ in line no 18 gives one output when assertions are enabled and different output when these are disabled. Hence the answer E is correct. The following url also helps when to use assertions and not to use.