Difficulty: Medium
Correct Answer: one two three two three done
Explanation:
Introduction / Context:
This problem checks understanding of Java switch fall-through and its interaction with a for loop. Without break statements, control falls through to subsequent case labels, executing their statements even if the matched constant differs.
Given Data / Assumptions:
i takes values 0, 1, 2.case 0 contains a break; others do not.case 1, case 2, and case 3.
Concept / Approach:
For each loop iteration, identify the matched case and then follow fall-through execution to the end of the switch (unless a break is encountered). Then concatenate the outputs across iterations.
Step-by-Step Solution:
i = 0 ⇒ case 0 hits break immediately ⇒ prints nothing.i = 1 ⇒ enters case 1 ⇒ prints "one ", then falls through to case 2 and prints "two ", then falls through to case 3 and prints "three ".i = 2 ⇒ enters case 2 ⇒ prints "two ", falls through to case 3 and prints "three ".Finally, println("done") appends "done" with a newline.
Verification / Alternative check:
Add explicit break after each case to see the difference, or reorder cases to observe fall-through behavior.
Why Other Options Are Wrong:
They omit some fall-through prints or add impossible ones given the loop bounds.
Common Pitfalls:
Assuming a switch stops after one matching case without a break; forgetting that fall-through continues to all subsequent cases.
Final Answer:
one two three two three done
Discussion & Comments