AP CSA 3.6 Debugging: Handing Out the Keys

Unit 3: Class Creation · Lesson 3.6 · Debugging

Handing Out the Keys

Methods: Passing and Returning Object References. 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

Returning an array field does not return a copy of it. It returns the very same array the object is using, and whoever receives it can now reach inside and change the object from the outside, past every private keyword in the file.

What is wrong with it

  1. getValues returns the internal array directly, so the harness is able to modify the object after the fact. Return a copy instead, so changes made by a caller cannot reach the field.
  2. The constructor stores the array it is handed, which has the same problem from the other direction: the caller still holds a reference to it. Copy the incoming array too.
  3. getFirst is correct and should keep returning the current first element.

The program reads

A count, then that many integers, then one replacement value.

The program should print

Three lines: the first element, the first element again after a caller tried to overwrite the array it was given, and the sum of the elements.

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
7 2 9 1
99
Example 1 output
7
7
19
Example 2 input
1
5
0
Example 2 output
5
5
5

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

An array variable holds a reference, not the elements. Assigning it copies the arrow, not the boxes it points at, so two variables end up naming one array. Both the constructor and the getter leak in exactly this way.

Hint 2

The harness modifies the array twice on purpose: once through what the getter handed back, and once through the array it passed to the constructor. A correct class survives both, so the two printed first-elements must match.

Hint 3

Copying means allocating a new array of the same length and walking the elements across one at a time. There is no shortcut on the AP exam subset.

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]