File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Following is a question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Following is a question" Watch "Following is a question" New topic

Following is a question

Netty poestel
Ranch Hand

Joined: Sep 20, 2004
Posts: 131
Following is a question:-

_______________________Begin snip_____________________________________
If the following code is successfully compiled and run without explicitly enabling assertions, what will happen?
class Language{
public static final int java=1;
public static final int pascal=2;
public static final int csharp=3;

public class Mgos {
static int lang=0;
public static void main(String argv[]){
case Language.pascal:
case Language.csharp:
assert false : lang;



1) An unmatched parameter exception will be thrown
2) An assert exception will be thrown
3) The program will run with no output
4) Output of "csharp"
___________end snip_________________________________________

what should be the answer and why ?

marc weber

Joined: Aug 31, 2004
Posts: 11343

This might be a good exercise in preparing for the exam: Have you compiled and run this program -- both with and without assertions enabled? What was your result? Is this different than what you expected? If so, how?

Code with UBB tags...

[ September 26, 2004: Message edited by: marc weber ]

"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
Andy Chang

Joined: Mar 24, 2004
Posts: 5
If assertions are disabled, the program will run with no output.

However, if assertions are enabled, the assert will fail and an AssertionError will be thrown.
An acceptable alternative is:
throw new AssertionError(lang);

Netty poestel
Ranch Hand

Joined: Sep 20, 2004
Posts: 131
Thanks all.
I'm fine about the assert statement.
If I take it out, there is compilation but no output.
This no output was my bother.
Do I understand that static int lang=0;
thus it's value will remain 0 throughout this code piece.

so the 'switch(lang)' is evaluating to switch(0) and since 0 is not the constants '1','2' and '3' thus none of the case gets printed out...right ?

however if I compile with -source 1.4 and the run with -ea, then the assertion error gets thrown...
well it got clear as I wrote this thanks for those feedbacks..
marc weber

Joined: Aug 31, 2004
Posts: 11343


That's exactly right. (And of course, the default is for assertions to be disabled without -ea.)

It's important to compile and run a couple of these before the exam. Reading all about assertions is one thing, but there's nothing like practice to verify and reinforce your understanding.

I agree. Here's the link:
subject: Following is a question
jQuery in Action, 3rd edition