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) 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,693 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,693 Points

try:

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