AP CSA 3.7 Debugging: Everybody Counts Alone

Unit 3: Class Creation · Lesson 3.7 · Debugging

Everybody Counts Alone

Class Variables and Methods. 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 counter is supposed to answer how many of these objects have ever been created, and it always answers one. Each object got its own private copy of the counter and dutifully counted itself. A shared fact needs a shared variable.

What is wrong with it

  1. The count field is an instance variable, so every object gets its own copy and each one only ever counts itself. Make it a class variable shared by every instance.
  2. getCount is an instance method that reads that field. Once the field is shared, make the method static too, so the harness can ask the class how many exist without holding an object.
  3. The id field SHOULD stay an instance variable. Each object has its own id, and that is correct.

The program reads

A single integer, the number of objects to create.

The program should print

Two lines: the id of the last object created, then the total number of objects created.

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

Ask the ownership question about every field: does this fact belong to one object or to the class as a whole? An id belongs to one object. A running total of how many exist belongs to the class. static is how you say the second one.

Hint 2

The starter gives every Widget an id of 1, because each object increments its own private counter from 0. Once the counter is shared, the ids come out 1, 2, 3 and the last one equals the total.

Hint 3

The harness calls Widget.getCount() on the class, not on an object. That only compiles if the method is static.

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]