Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Java Objects Harnessing the Power of Objects Changing State

Jason Scruggs
Jason Scruggs
567 Points

How to create a method named "charge"

I'm confused about how to create the method. Do I first need to create a variable (?) named charge? Is the method defined inside the curly brackets? Any help is appreciated.

GoKart.java
class GoKart {
  public static final int MAX_BARS = 8;
  private String color;

  public GoKart(String color) {
    this.color = color;
  }

  private int barCount; 


  public String getColor() {
    return color;
  }
}

2 Answers

pet
pet
10,908 Points
public GoKart(String color)

This defines the method Gokart

Methods are defined like rather like functions. The variable you need, barCount, is already defined.

The method could look like this:

public void charge() { barCount = MAX_BARS; }

And it can go anywhere inside the class (except not inside another method) like this:

class GoKart { public static final int MAX_BARS = 8; private String color;

public GoKart(String color) { this.color = color; }

private int barCount;

public String getColor() { return color; }

public void charge() { barCount = MAX_BARS; } }

It's good housekeeping to put variables and constants at the top of the class, then the constructor (which you call with the "new" keyword when you make a new GoKart), then getters and setters, and then other methods.

Lastly, I used the keyword void assuming this method doesn't need to report back. If you needed the method to report its success or failure you could declare it boolean and return true (if it charges successfully) or false (if it's already full charged.) That could look like this:

public boolean charge() { if (barCount < MAX_BARS) { barCount = MAX_BARS; return true; } return false; }