Java Java Objects Harnessing the Power of Objects Throwing Exceptions

Rafał Stasiak
Rafał Stasiak
3,619 Points

IllegalArgumentException

Hello, Please help me with my code. What is wrong?

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;
    barCount -= laps;
    int numberOfLaps = lapsDriven + laps;
    if (numberOfLaps > MAX_BARS) {
    throw new IllegalArgumentException("Too many laps");
    }
    lapsDriven = numberOfLaps;
  }
}

1 Answer

Steven Parker
Steven Parker
174,024 Points

Here's a few hints:

  • your new code is only to throw the exception, it won't need to make any new changes to "lapsDriven"
  • be sure you test if there aren't enough bars to support the laps request
  • you should not need to create any new variables, just test the ones already there
  • you won't need to reference MAX_BARS for this test
  • make sure you throw the exception before the barCount and lapsDriven fields are changed.