AP CSA 1.12 Debugging: Two Names, One Object

Unit 1: Using Objects and Methods · Lesson 1.12 · Debugging

Two Names, One Object

Objects: Instances of Classes. 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

Assigning one object variable to another does not make a second object. It makes a second name for the first one, and a change made through either name is visible through both, because there was only ever one thing there.

What is wrong with it

  1. The copy is made by assigning one reference to another, so both names point at the same Counter and incrementing one appears to increment both. Build a genuinely separate object instead.
  2. The second counter is never actually incremented before it is printed, because the increment call is made on the first counter twice. Fix the second call so it targets the copy.
  3. The Counter class itself is correct and should not change.

The program reads

Two integers: a starting value, and how many times to increment the first counter.

The program should print

Two lines: the first counter after its increments, then the second counter, which should still hold its starting value plus one.

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
0 3
Example 1 output
3
1
Example 2 input
10 1
Example 2 output
11
11

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 object variable holds a reference, which you can picture as an arrow pointing at the object. Counter second = first; copies the arrow, not the thing it points at. Now two arrows aim at one Counter.

Hint 2

The only thing that creates a new object is the keyword new. If new appears once, exactly one object exists no matter how many variables are naming it.

Hint 3

The starter increments first one extra time and never touches second at all, which on the same shared object looks almost right. Once the objects are separate, that second call has to target the second counter.

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]