Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Java Java Objects (Retired) Harnessing the Power of Objects Incrementing

Daniel Schwemmlein
Daniel Schwemmlein
4,960 Points

Stuck at a while statement

Hey there!

Once again I'm stuck here. I was supposed to have a whilestatement here that prevents one from overcharging the gokart. For some reason it won't work. Its probably a stupid mistake, thanks in advance for some advice!

GoKart.java
public class GoKart {
  public static final int MAX_ENERGY_BARS = 8;
  private String mColor;
  private int mBarsCount;

  public GoKart(String color) {
    mColor = color;
    mBarsCount = 0;
  }

  public String getColor() {
    return mColor;
  }

  public void charge() {
    mBarsCount = MAX_ENERGY_BARS;
  }

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

  public boolean isFullyCharged() {
    return mBarsCount == MAX_ENERGY_BARS;

   while (!isBatteryEmpty()) {
     boolean isFullyCharged = false;
     mBarsCount--;
     isFullyCharged = true;
   }
   return isFullyCharged;
  } 


  }

2 Answers

Use the following snippet of code as your example to follow:

public boolean dispense() {
    boolean wasDispensed = false;
    if (!isEmpty()) {
      mPezCount--;
      wasDispensed = true;
    }
    return wasDispensed;
  }
  • Instead of if, use while
  • increment, rather than decrement
  • The charge method doesn't need to return a boolean, so ignore all of the code involving the boolean wasDispensed

Keep isFullyCharged as it was from the previous challenge.

  public boolean isFullyCharged() {
    return mBarsCount == MAX_ENERGY_BARS;
  }

Firstly, there are no stupid mistakes, every mistake is a lesson that will just increase your understanding and make you a better coder. Now for this challenge I believe you need to look at the Charge() method. This is the method that will return the charge for your GoKart, so this is the method you need to edit. I believe this challenge asks you to change the implementation of it.

Now it asks you to increment for every missing battery level. Since our GoKart has a max charge, it is important that we recognize this in our while loop. You have already created a boolean to check whether the charge is at the max in the isFullyCharged() method. So if you can use this in your while loop to increment until this value is true.

it would look something like this,

while (!isFullyCharged()){
  mBarsCount++;
}