AP CSA 4.7 Debugging: True at 127, False at 128

Unit 4: Data Collections · Lesson 4.7 · Debugging

True at 127, False at 128

Wrapper 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

Two Integer objects holding the same number compare as equal with == when the number is small and unequal when it is large. Nothing about your code changed. Java caches the small ones and builds fresh objects for the rest, and == was always asking about objects rather than values.

What is wrong with it

  1. The first comparison uses == on two Integer objects. It happens to print true for values from -128 to 127 and false for everything outside that range, which is worse than being wrong all the time. Use the method that compares the values they hold.
  2. The unboxing sum casts to int before adding, truncating each value. Remove the cast and let the sum use the actual values.
  3. The line comparing the two int primitives is correct. == is the right operator for primitives.

The program reads

Two integers.

The program should print

Three lines: whether the two values are equal compared as objects, whether they are equal compared as primitives, and their sum.

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
128 128
Example 1 output
true
true
256
Example 2 input
127 127
Example 2 output
true
true
254

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

Run the starter with 127 127 and then with 128 128. The first prints true and the second prints false. Java keeps a cache of Integer objects for -128 through 127 and hands out the same object for those, so == accidentally works in a narrow band and stops working outside it.

Hint 2

A bug that is correct for small test values and wrong for large ones is more dangerous than one that always fails, because it survives testing. Use equals on any wrapper, always, without checking the range first.

Hint 3

boxedA / 10 already divides as ints and discards the remainder. Adding the two boxed values directly unboxes them and sums the real numbers.

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]