0% found this document useful (0 votes)
68 views3 pages

Control Answers: No. Answer Remark

1. The document contains sample code snippets and explanations of the output or errors. It is a mock exam for the Certified Java Programmer certification. 2. Several code snippets contain errors like missing break statements, incorrect variable assignments, out-of-scope variables, and more. The explanations identify the specific errors and explain why they occur. 3. Other snippets are valid code and the explanations predict the output by tracing the program flow and variable values at each step. They emphasize carefully analyzing boolean expressions and variable scopes.

Uploaded by

anand.pasunoori
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views3 pages

Control Answers: No. Answer Remark

1. The document contains sample code snippets and explanations of the output or errors. It is a mock exam for the Certified Java Programmer certification. 2. Several code snippets contain errors like missing break statements, incorrect variable assignments, out-of-scope variables, and more. The explanations identify the specific errors and explain why they occur. 3. Other snippets are valid code and the explanations predict the output by tracing the program flow and variable values at each step. They emphasize carefully analyzing boolean expressions and variable scopes.

Uploaded by

anand.pasunoori
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

control Answers

Answers: Certified Java Programmer Mock Exam


No. Answer Remark
Cases one and three have no break statement, so the next case is also executed and x
1 c Prints: v w x x y z z
and z are printed twice.
2 e Compile-time error. The keyword, case, is missing from the case labels.
The boolean type variable, b, is initialized to true. The boolean expression of the first
if statement, b = false, is a simple assignment expression that sets b to false. Always
3 c Prints: C
look carefully at the boolean expression of an if statement to verify that the expected
equality operator (==) has not been replaced by the simple assignment operator (=).
The expression, b = false, appears to be testing the value of b, but it is really setting
the value of b. Always look carefully at the boolean expression of an if statement to
4 d Prints: D
verify that the expected equality operator (==) has not been replaced by the simple
assignment operator (=).
The first if statement initializes the value of b. The expression, b = false, appears to be
testing the value of b, but it is really setting the value of b. Always look carefully at
5 c Prints: C
the boolean expression of an if statement to verify that the expected equality operator
(==) has not been replaced by the simple assignment operator (=).
The switch statement does not contain any break statements. The first case falls
6 d Prints: ABCBCC through to the second. The second case falls through to the third. There is no default
switch label, so nothing is printed when variable i is 3.
The loop variable, h, is local to the for statement. The print statement causes a
7 f Compile-time error compile-time error, because it refers to the out-of-scope local variable, h. Always
check for variables that are out-of-scope!
The case constant expression, 1000, produces a compile-time error, because it
exceeds the range of the switch expression type, byte. The type of a switch expression
can be byte, short, int or char. A constant expression is associated with each case
8 f Compile-time error label. Each case constant expression must be assignable to the type of the switch
expression. In this case, the switch expression, b, is of type byte; so the maximum
positive value of each case constant expression is limited to the maximum byte value,
127.
No break statements appear inside the switch statement, so more than one case is
9 c Prints: 234
processed.
On the first pass through the loop, the value of x is 6, so 5 is subtracted from x. On
the second pass, the value of x is 1, so 3 is added to x. On the third pass, the value of
x is 4, so 1 is subtracted from x. On the fourth pass, the value of x is 3, so the
10 c Prints: 61433
variable, success, is incremented from zero to one. On the final pass, the value of x is
3 and the variable, success, is incremented to the value, 2. The boolean expression of
the do loop is now false, so control passes out of the loop.
On the first pass through the loop, the switch expression, x, has the value, -5. None of
the case constants are matched, so the statement following the default label is
executed causing the value of x to be set to -3. On the second pass, the default case of
11 b Prints: 1433 the switch statement is executed again, and two is again added to the value of x. The
new value is -1. On the third pass, the value of x is again incremented, and the new
value is +1. After that, the value of x is printed on each pass through the loop. For the
last two passes, the value of x is 3.
12 d Compile-time error at line A compile-time error occurs at line 2 as a result of the attempt to shadow the method
e 2 Compile-time error at local variable, k, within the for-loop. A variable declared within the for-loop can not
line 3 shadow a local variable of the enclosing method. At line 3, the declaration of variable
j causes a compile-time error. A single local variable declaration statement may
contain a comma separated list of variable declarators: "int i=0, j=0;". Alternatively,
the same two variables could be declared using two local variable declaration
statements: "int i=0; int j=0;". Please note that the two statements are separated by a
semicolon, and each declares the type of the variable. The initialization part of a for
statement may use a single local variable declaration statement to declare more than
one local variable. Each of the new variables is declared in a comma separated list of

page:1
control Answers

Answers: Certified Java Programmer Mock Exam


No. Answer Remark
variable declarators. In this program, the local variables should have been declared as
follows: "int i=0, j=0;". Instead, the type of variable j has been incorrectly added to
the declarator: "int i=0, int j=0;". The result is a compile-time error.
A method local variable, i, is declared at line 3. At line 4, the initialization part of the
for statement initializes the method local variable to the value zero. The for statement
does not declare a new variable, i, so the method local variable is not shadowed
within the loop. Suppose a local variable, v, is declared within a statement or block.
13 b Prints: 1212013
Variable, v, can shadow a class variable or an instance variable of the same name, but
a compile-time error is generated if v shadows a method local variable. Please note
that a compile-time error is not generated if a local variable is shadowed within the
declaration of a class that is nested within the scope of the local variable.
A method local variable, i, is declared at line 3. At line 4, the initialization part of the
for statement attempts to shadow the method local variable with a new variable that is
intended to be local to the for statement. The result is a compile-time error. At line 2,
a new variable, i, is declared within the for statement. That variable shadows the class
variable, but it does not shadow the method local variable declared at line 3. The
scope of a method local variable begins with its own initializer--if present--and
Compile-time error at line
14 e extends to the end of the method body. At line 2, the method local variable is not in
4
scope, so shadowing does not occur. Suppose a local variable, v, is declared within a
statement or block. Variable, v, can shadow a class variable or an instance variable of
the same name, but a compile-time error is generated if v shadows a method local
variable. Please note that a compile-time error is not generated if a local variable is
shadowed within the declaration of a class that is nested within the scope of the local
variable.
The index, i, is incremented before the array access expression is evaluated, so the
first element accessed is at index one instead of zero. The arguments, BCDEF, are
15 d Run-time error
printed before an ArrayIndexOutOfBoundsException is thrown when the attempt is
made to access an element beyond the end of the array.
This trick question has a for loop nested inside of a do loop. For each iteration, the
16 h Prints: 121212
values of i and j are as follows: .
This trick question has a do-loop nested inside of a for-loop. For each iteration, the
17 a Prints: 0001
values of i and j are as follows: .
This trick question has a do-loop nested inside of a for-loop. For each iteration, the
18 f Prints: 1112
values of i and j are as follows: .
This trick question has a while-loop nested inside of a do-loop. For each iteration, the
19 b Prints: 012
values of i, j and k are as follows: .
This trick question has a do-loop nested inside of a while-loop. For each iteration, the
20 d Prints: 012345
values of i and j are as follows: .
A while loop is nested inside of a do loop. The while loop iterates once during the
21 c Prints: i1k1i2j1i3j2 first iteration of the do loop. The body of the while loop does not execute during the
final iteration of the do loop.
The initialization statement, labeled A, is processed first. The boolean expression,
Prints:
22 b labeled B, is processed before each iteration of the loop. The body of the loop is
A0B0J1C1B1J2C2B2
processed next followed by the update expression, labeled C.
Suppose the print statement, System.out.print("(" + i + "," + j + ")");, is inserted at the
top of the loop. The output of the program would be as follows: (0,9)(2,8)(4,7)6,6.
23 c Prints: 6,6
The variable, i, is incremented twice with each pass through the loop. The variable, j,
is decremented once with each pass. The loop terminates when i reaches six.
24 e Prints: 9,4 Suppose the print statement, System.out.print("(" + i + "," + j + ")");, is inserted at the
top of the loop. The output of the program would be as follows:
(1,8)(3,7)(5,6)(7,5)9,4. The variable, i, is incremented twice with each pass through
the loop. The variable, j, is decremented once with each pass. The boolean expression
of the while loop, i++ <= j--, is false when i reaches 8 and j reaches 5. The value of i
is subsequently incremented and j is decremented yielding 9 and 4 respectively. Those

page:2
control Answers

Answers: Certified Java Programmer Mock Exam


No. Answer Remark
values are printed.
Suppose the print statement, System.out.print("(" + i + "," + j + ")");, is inserted at the
top of the loop. The output of the program would be as follows:
(0,9)(2,8)(4,7)(6,6)(7,5)8,4. The initial value of j is 9. With each pass through the
loop, the expression, j-- < 7, decrements j. The initial value of variable i is 0. With
25 f Prints: 8,4
each pass through the loop, the expression, i++ < 7, increments variable i. Inside the
body of the loop, i is also incremented as long as j is greater than or equal to 7. When
j is less than seven, variable i is no longer incremented inside the body of the loop,
but it is still incremented by the expression, i++ < 7.
Suppose the print statement, System.out.print("("+i+","+j+","+k+")");, is inserted
before the switch statement. The output of the program would be as follows:
(1,0,1)(2,0,2)(2,1,3)(3,1,4)3,1. On the first iteration, case 1 is processed. The
"continue label1;" statement causes control to go directly to the top of the for-loop
following the label, label1. The boolean expression of the do-loop is not processed.
On the second iteration, case 2 is processed. The break statement causes the switch
26 c Prints: 3,1
statement to complete, and control passes to the boolean expression of the do-loop.
On the third iteration, case 3 is processed. The break with label statement, "break
label2;", completes abruptly; and the do-loop completes abruptly without processing
the loop expression, ++j<5, so j is not incremented. On the fourth iteration, case 4 is
processed. The break with label statement, "break label1;", completes abruptly, and
the for-loop completes abruptly.
Suppose the print statement, System.out.print("("+h+","+i+","+j+","+k+")");, is
inserted before the switch statement. The output of the program would be as follows:
(1,1,0,2)(1,2,1,4)(1,3,2,6)1,3,2. Three iterations of the loop are executed. On the first
iteration, the switch expression, k, matches the case constant, 2. The subsequent break
statement is executed and the switch statement completes normally. On the second
27 b Prints: 1,3,2
iteration, the switch expression matches the case constant, 4; and the subsequent
continue statement causes control to pass to the loop-continuation point of the do
statement where the expression, ++j < 5, is evaluated and found to be true. On the
final iteration, the switch expression does not match any case constant; so the break
statement following the default label is processed.

page:3

You might also like