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 (Retired) Creating the MVP Remaining Characters

Aldrich Alviar
Aldrich Alviar
2,745 Points

add a new method that returns remaining char avail based on length of what is stored mText

new method

Tweet.java
public class Tweet {
  public static final int MAX_LENGTH = 140;
  private String mText;

  public Tweet(String text) {
    while(text.length()) < MAX_LENGTH;
    {
      mText = text;
    }
  }

  public String getText() {
    return mText;
  }

}
Simon Coates
Simon Coates
28,694 Points

the test should be

    if(text.length() <= MAX_LENGTH)   {
      mText = text;
    }

you don't want a loop. If the loop condition is true, it will repeat infinitely. HOWEVER, the problem is that it allows you to create an object in a questionably valid state. If the text is too long, then mText is not set. IE, the tweet's mText is null, but it hasn't told you anything is wrong. I'm not very familiar with java, but i tried to create a demo of using Exceptions.

class Main {
  public static void main(String[] args) {
    Tweet aTweet;
    try {
       aTweet = new Tweet("abcdefghijklmnopqustuvwxyz"+
        "abcdefghijklmnopqustuvwxyz"+
     //   "abcdefghijklmnopqustuvwxyz"+
      //  "abcdefghijklmnopqustuvwxyz"+
     //   "abcdefghijklmnopqustuvwxyz"+
     //   "abcdefghijklmnopqustuvwxyz"+
       "abcdefghijklmnopqustuvwxyz"+
    //   "abcdefghijklmnopqustuvwxyz"+
        "abcdefghijklmnopqustuvwxyz"+
        "abcdefghijklmnopqustuvwxyz");
        System.out.println(aTweet.getText());   
    }catch(Exception e){
        System.out.println("couldn't create a tweet");  
    }
  }
}

and

public class Tweet {
  public static final int MAX_LENGTH = 140;
  private String mText;

  public Tweet(String text) throws Exception {
    if(text.length() < MAX_LENGTH)   {
      mText = text;
    } else {
        throw new Exception("failure");
    }
  }

  public String getText() {
    return mText;
  }
}

(I tested this at https://repl.it/languages/java .)

1 Answer

Simon Coates
Simon Coates
28,694 Points

try:

  public int getCharsLeft(){
    return MAX_LENGTH - mText.length();
  }