AP CSA 1.5 Debugging: Casting Truncates, It Does Not Round

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

Casting Truncates, It Does Not Round

Casting and Range of Values. 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

A cast to int does not round to the nearest whole number. It deletes everything after the decimal point, so 3.99 becomes 3. Code that assumes rounding is off by one on almost every input that has a fraction at all.

What is wrong with it

  1. The rounded value uses a plain cast to int, which truncates. To round to the nearest whole number, add 0.5 before casting. Fix it.
  2. The halved value casts to int BEFORE dividing, so the fraction is destroyed before the division can produce one. Divide as doubles and cast only if you need to.
  3. The printed original value is correct.

The program reads

One double value.

The program should print

Three lines: the value as given, the value rounded to the nearest whole number, and half the value as a double.

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.99
Example 1 output
3.99
4
1.995
Example 2 input
7.0
Example 2 output
7.0
7
3.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

Cast 3.99 to int and you get 3, not 4. Truncation always moves toward zero, so adding 0.5 first is what turns it into rounding: 3.99 + 0.5 is 4.49, which truncates to 4.

Hint 2

In the halving line the cast applies to value alone, so an int is divided by an int and the result is an int before it is ever widened back to double. Removing the cast entirely is the fix.

Hint 3

Parentheses decide what a cast applies to. (int) value + 0.5 casts first and then adds. (int) (value + 0.5) adds first and then casts. Only the second one rounds.

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]