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

how to solve this

i made a method which is void and public but its not working

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

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

  public String getColor() {
    return color;
  }
  public static void charge(barCount){
    barcount = MAX_BARS;
  }
}

1 Answer

You are close. However, you don't need to declare the charge() method to static. (Static means you can access the method without an instance of GoKart, which we wouldn't need to set the charge of a GoKart until it is instantiated) and you don't need to pass in barCount as an argument of the charge method; just change it directly in the method. I've added the this keyword in the charge method so that we are charging that instance of GoKart's barCount.

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

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

  public String getColor() {
    return color;
  }
  public void charge(){ // no need to pass in barCount, so removed from the argument list
    this.barCount = MAX_BARS; //use the "this" keyword to set the given instantiation of GoKart's barcount value to MAX_BARS
  }
}

Thnx for helping...

yep. Good luck!