A developer writes a loop to iterate over an array of integers. The loop must sum all elements and stop early if the sum exceeds 100. Which control flow construct should be used?
Trap 1: while(true) { sum += arr[i]; i++; }
Infinite loop without break condition.
Trap 2: do { sum += arr[i]; i++; } while(i<arr.length && sum <= 100);
Executes at least once unconditionally, may sum before checking.
Trap 3: for(int val : arr) { sum += val; if(sum > 100) break; }
For-each loop cannot modify index; break works but style is unusual.
- A
while(true) { sum += arr[i]; i++; }
Why wrong: Infinite loop without break condition.
- B
for(int i=0; i<arr.length; i++) { sum += arr[i]; if(sum > 100) break; }
Correctly uses for loop and break to exit early.
- C
do { sum += arr[i]; i++; } while(i<arr.length && sum <= 100);
Why wrong: Executes at least once unconditionally, may sum before checking.
- D
for(int val : arr) { sum += val; if(sum > 100) break; }
Why wrong: For-each loop cannot modify index; break works but style is unusual.