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 Delivering the MVP Forum

Damjan Vlaic
Damjan Vlaic
19,244 Points

---java---

someone pls help
in main.java i left a comment where i have the problem :)

Forum.java
public class Forum {
  private String topic;

  // TODO: add a constructor that accepts a topic and sets the private field topic
  public Forum(String topic) {
    this.topic = topic;
  }
  public String getTopic() {
    return topic;
  }


  //Uncomment this when you are prompted to do so
  public void addPost(ForumPost post) {
    System.out.printf("A new post in %s topic from %s %s about %s is available",
            topic,
            post.getAuthor().getFirstName(),
            post.getAuthor().getLastName(),
            post.getTitle()
    );
  }


}
User.java
public class User {
  private String firstName;
  private String lastName;
  // TODO: add private fields for firstName and lastName

  public User(String firstName, String lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    // TODO: set and add the private fields

  }

  // TODO: add getters for firstName and lastName
  public String getFirstName() {
    return firstName;
  }
  public String getLastName() {
    return lastName;
  }
}
ForumPost.java
public class ForumPost {
  private User author;
  private String title;
  private String description;

  // TODO: add a constructor that accepts the author, title and description
  public ForumPost(User author, String title, String description) {
    this.author = author;
    this.title = title;
    this.description = description;
  }
  public User getAuthor() {
    return author;
  }

  public String getTitle() {
    return title;
  }

  public String getDescription() {
    return description;
  }
}
Main.java
public class Main {

  public static void main(String[] args) {
    System.out.println("Beginning forum example");
    if (args.length < 2) {
      System.out.println("Usage: java Main <first name> <last name>");
      System.err.println("<first name> and <last name> are required");
      System.exit(1);
    }
    //Uncomment this when prompted
    Forum forum = new Forum("java");
    // TODO: pass in the first name and last name that are in the args parameter
    User author = new User("Damjan", "Vlaic");
    // TODO: initialize the forum post with the user created above and a title and description of your choice
    ForumPost post = new ForumPost("objects"); // I'M STUCK IN THIS LINE :(
    forum.addPost(post);

// 
  }

}

3 Answers

Hi there,

A couple of points on this.

Where you create the User instance called author, read the preceding TODO: - it says pass in the first name and last name that are in the args parameter so you're not just passing in two names of your choice - they are held inside the args parameter. That is an array of strings which are the arguments passed into the main at the outset of the program, main(String[] args). You want to use the first two elements of that array as the two required names.

Next, the ForumPost instance, where you have your comment, needs additional parameters - the ForumPost constructor starts with public ForumPost(User author, String title, String description), so you need a User and two strings. You can make up the two strings; the User you created above.

Hope that helps,

Steve.

Pierre Bodereau
Pierre Bodereau
3,535 Points

Hi there...first of all, you are not giving the good parameters when you create the new ForumPost....or you didnt write them... what is the problem exactly?? you dont give enough details if you want help

Mehmet Arabaci
Mehmet Arabaci
4,432 Points

Okay so what Steve has said above is 100% right. I'm just going to break it down for you so it's much easier to read. Your code should effectively be as shown below, I've added comments to explain as best I can.

public class Main {

  public static void main(String[] args) {

--> HERE WE HAVE PASSED IN AN ARRAY OF STRINGS CALLED args. What is in these strings and how they got there I have no idea, maybe someone else can answer that. All I know is that within this string lies the first and last name and logic dictates that args[0] is first name and args[1] is last name. We need to use these names in our User class initiated with the parameter name author.

    System.out.println("Beginning forum example");
    if (args.length < 2) {
      System.out.println("Usage: java Main <first name> <last name>");
      System.err.println("<first name> and <last name> are required");
      System.exit(1);
    }

JUST REMEMBER IN OUR USER CLASS(tab) we have the constructor as: public User(String firstName, String lastName) --> so because author is just the name of this instance of the User class we need to pass the fristName and the lastName, which as mentioned above is in our args Array. Again how they got there I got no idea, but they are. Your code therefore becomes:

    //Uncomment this when prompted
    Forum forum = new Forum("Java");

    // TODO: pass in the first name and last name that are in the args parameter
    User author = new User(args[0], args[1]);
    // TODO: initialize the forum post with the user created above and a title and description of your choice

FINALLY LIKE WITH THE WHOLE author thing. post is an instance of the ForumPost Class and the constructor in that class is: public ForumPost(User author, String title, String description). AND we have just defined our author above so all that's left is to add a title and a description as dictated by the constructor. Our code becomes:

    ForumPost post = new ForumPost(author, "Any Title You Like", "Any description you like" );
    forum.addPost(post);

// */
  }

}

so ye

The comments tell you how the args are used. You pass them to Main when you create the running application at the command line - the instructions say: System.out.println("Usage: java Main <first name> <last name>");

Damjan Vlaic
Damjan Vlaic
19,244 Points

You really explained everything perfect, i fixed it and got it, tnx for helping ;)