Java Java Objects Harnessing the Power of Objects Throwing Exceptions

Brandy Steals
PRO
Brandy Steals
Pro Student 5,455 Points

Help with Bummer: Make sure you throw the exception before you change the barCount and lapsDriven fields.

Am I updating the variables barCount and lapsDriven in the wrong location? It is after the exception.

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) {
    int newAmount = barCount -= laps;
    if (newAmount < 0) {
      throw new IllegalArgumentException("Not Enough Bars!");
    }
    barCount = newAmount;  
    lapsDriven += laps;
  }
}

1 Answer

Steven Parker
Steven Parker
174,022 Points

Congratulations on resolving your own issue! :+1:

For the benefit of other readers, the "barcount" was being updated with a subtracting assignment ("-=") in the calculation instead of a simple subtraction ("-").