AP CSA 3.8 FRQ Practice: What the Name Reaches

Unit 3: Class Creation · Lesson 3.8 · FRQ Practice

What the Name Reaches

A free response question in the shape the exam uses: a stated contract, four rubric parts, and no main method handed to you. Worth 4 points.

Why this question is worth four points

Which variable a name reaches is decided by where it was declared, not by what it is called. A parameter named like a field hides that field for the whole method, and the method still compiles and still runs. Every part of this question is a place that mistake can hide.

What you are given

Nothing is given. Write a class named Counter. Do not write a main method.

The question

  1. (a) A constructor Counter(int start, int step) that stores both, where step is how much each bump adds.
  2. (b) public void bump() adds step to the current value.
  3. (c) public void bumpBy(int step) adds THAT step to the current value, without changing the stored step.
  4. (d) public int getValue() and public int getStep() return the current value and the stored step.

What the reader is looking for

  1. Write class Counter with the constructor and methods described. No main method.
  2. Part (c) takes a parameter called step, which hides the field of the same name for that whole method. Adding the parameter is correct here; changing the FIELD is not.
  3. After a call to bumpBy, getStep must still return the value the constructor was given.

Worked examples

These show what a correct answer prints. There are more cases you cannot see, and they use different values, so an answer built around just these numbers will fail.

Example 1 input
0 5 100
Example 1 output
0
5
5
105
5
110
Example 2 input
10 3 50
Example 2 output
10
3
13
63
3
66

Your answer

Main.java

Input for the Run button

How this is scored: your answer runs against every test case, and the fraction it passes becomes your score out of 4. That is not how a human AP reader marks a rubric, so treat the score as a check on whether your code works, and the rubric above as the thing you are actually practising.


  

  

Stuck?

Hint 1

The driver calls bump AFTER bumpBy and asks for the value again. If bumpBy overwrote the stored step, that last bump adds the wrong amount and the mistake finally becomes visible.

Hint 2

Inside bumpBy, the bare name step means the parameter. To reach the field you would have to write this.step, which is exactly what this method must NOT change.

Hint 3

The constructor has the same collision. this.step = step; assigns the parameter to the field; step = step; assigns the parameter to itself and leaves the field at 0.

Before you submit

3 mistake(s) that lose points on this question

Each of these is a real error the grader catches. Check your answer against them before you submit, not instead of trying.

  • bumpBy overwrites the stored step with the parameter
  • the constructor assigns the step parameter to itself, leaving the field at 0
  • bump adds 1 instead of the stored step

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]