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 Overload Methods

Create a new method named drive that accepts no arguments. It should call the newer drive method passing in a 1 for the

This is the code I have been using but it is not working public void drive () { drive (1);

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

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

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

  public boolean isBatteryEmpty() {
    return barCount == 0;
  }

  public boolean isFullyCharged() {
    return MAX_BARS == barCount;
  }

  public void drive(int laps) {
    lapsDriven+=2;
    barCount-=2;
public void drive(){
  drive (1);
 }
  }

  }
}

2 Answers

Caleb Kemp
Caleb Kemp
12,754 Points

You think, it seems like I'm doing exactly what the teacher told me to do, but I'm getting this error

Bummer: java.lang.IllegalArgumentException: ParseException:

What is going on?

Well, you actually have 2 problems going on, however, only one of them is making it fail. 1st the critical error. The problem is that you accidentally placed the new method inside of the old, so this...

public void drive(int laps) {
    lapsDriven+=2;
    barCount-=2;
public void drive(){
  drive (1);
 }
  }

  }

should become

public void drive(int laps) {
    lapsDriven+=2;
    barCount-=2;
}
public void drive(){
  drive (1);

  }

Second problem

the public void drive(int laps) method is supposed to increase the value of lapsDriven by whatever the value of laps that was passed in. Right now, it doesn't matter how many laps you pass in, it always increases it by 2. This is incorrect, however, the challenge will not fail you for this. To fix it change,

public void drive(int laps) {
    lapsDriven+=2;
    barCount-=2;
}

to

public void drive(int laps) {
    lapsDriven+=laps;
    barCount-=laps;
}

Thank you very much Caleb it worked