AP CSA 3.4 Debugging: The Constructor That Is Not One

Unit 3: Class Creation · Lesson 3.4 · Debugging

The Constructor That Is Not One

Constructors. 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 constructor has no return type. Write void in front of it and it silently becomes an ordinary method that merely shares the name of the class. Java then supplies the default constructor, your fields stay at zero, and nothing anywhere complains.

What is wrong with it

  1. The two-argument constructor is declared with a return type of void, which makes it a method rather than a constructor. Java therefore builds the object with a default constructor and the fields stay 0. Remove the return type.
  2. The one-argument constructor is supposed to build a square by delegating to the two-argument constructor. It duplicates the assignments by hand instead. Replace the body with a call that reuses the other constructor.
  3. The three getters are correct.

The program reads

A width, a height, then a side length for the square.

The program should print

Five lines: the rectangle width, its height, its area, then the square width and its area.

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 4 5
Example 1 output
3
4
12
5
25
Example 2 input
1 1 1
Example 2 output
1
1
1
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

Read the two declarations side by side. One says public void Rect and the other says public Rect. Only the second is a constructor. The first is a method you could call as r.Rect(3, 4) after the object already exists, which is never what anyone wants.

Hint 2

A square has equal sides, so its height should equal its side, not 0. The starter leaves height at 0, which is why the square area is 0.

Hint 3

this(side, side) as the FIRST statement of a constructor calls the other constructor. Constructor chaining keeps the field assignments in exactly one place.

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]