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 Throwing Exceptions

Pratham Patel
Pratham Patel
4,976 Points

can I have the answer to this problem

I don't see it

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() {
    drive(1);
  }

  public void drive(int laps) {
    lapsDriven += laps;
     if(laps > MAX_BARS) {
      throw new IllegalArgumentException();
    }
    barCount -= laps;
  }
}

2 Answers

andren
andren
28,558 Points

There are two issues with your code:

  1. The if statement should be placed at the top of the function, you should not increase lapsDriven before you potentially throw the exception.

  2. You compare the requested laps to MAX_BARS. The MAX_BARS variable holds the maximum charge the GoKart can store, not the current charge it actually has. The current charge is stored in barCount.

If you fix those two issues like this:

public void drive(int laps) {
    if(laps > barCount) {
        throw new IllegalArgumentException();
    }
    lapsDriven += laps;
    barCount -= laps;
  }

Then you'll be able to pass the challenge.

Stuart Wright
Stuart Wright
41,118 Points

In your if statement, you need to compare laps to barCount rather than MAX_BARS. Because the kart might not be at max battery when it receives the drive request. With that one change, your code should pass.

Edit: I see that Andren beat me to it. Although I agree with point 1 above, it seems that's not actually necessary to pass the challenge.