AP CSA 4.2 Debugging: The Loop That Cannot Write Back

Unit 4: Data Collections · Lesson 4.2 · Debugging

The Loop That Cannot Write Back

Introduction to Using Data Sets. This is not a blank editor: it is someone else's attempt. Find what is wrong, fix it, and submit to be graded against hidden test cases.

Why debugging is its own skill

The doubling loop is written correctly in every visible way and the array comes out completely unchanged. The enhanced for loop hands you a copy of each element, so assigning to the loop variable updates the copy and throws it away.

What is wrong with it

  1. The doubling loop uses an enhanced for loop and assigns to the loop variable, which only changes a copy. Rewrite it as an indexed loop so the values in the array are actually replaced.
  2. The count of values above the threshold compares against the wrong variable: it uses the loop index instead of the element. Fix the comparison.
  3. The printing loop at the end is correct, and an enhanced for loop is the right choice there because it only reads.

The program reads

A count, then that many integers, then a threshold.

The program should print

Every element after doubling, one per line, then the count of the doubled values that are strictly greater than the threshold.

Worked examples

These show what the FIXED program should print. There are more cases you cannot see, and they use different values, so patching around just these numbers will fail.

Example 1 input
4
1 5 9 2
8
Example 1 output
2
10
18
4
2
Example 2 input
1
3
5
Example 2 output
6
1

Your answer

Main.java

Input for the Run button

Run sends whatever is in the code box below, bugs and all, so you can see the crash or the wrong answer for yourself before you fix anything.


  

  

Stuck?

Hint 1

The enhanced for loop variable is a fresh copy of the element, not the slot it came from. Writing to it is like changing a photocopy: legal, silent, and useless. Only data[i] = ... reaches the array.

Hint 2

The rule worth memorizing: enhanced for to READ, indexed for to WRITE. It applies to the exam and to every array you touch afterward.

Hint 3

In the counting loop, i is a position (0, 1, 2) and data[i] is a value. Comparing a position against a threshold meant for values is a type-correct, meaning-free comparison, which is why the compiler stays quiet.

Where to go next

Get in Touch

Whether you're a student, parent, or teacher — I'd love to hear from you.

Just want free AP CS resources?

Enter your email below and check the subscribe box — no message needed. Students get daily practice questions and study tips. Teachers get curriculum resources and teaching strategies.

Typically responds within 24 hours

Message Sent!

Thanks for reaching out. I'll get back to you within 24 hours.

🏫 Welcome, fellow educator!

I offer curriculum resources, practice materials, and study guides designed for AP CS teachers. Let me know what you're looking for — whether it's classroom materials, a guest speaker, or Teachers Pay Teachers resources.

Email

[email protected]

📚

Courses

AP CSA, CSP, & Cybersecurity

Response Time

Within 24 hours

Prefer email? Reach me directly at [email protected]