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

Schwartz Prince
PLUS
Schwartz Prince
Courses Plus Student 2,132 Points

Couldn't get an answer

I tried this code and I couldn't make it run. Can someone please help me in finding out the error

Forum.java
public class Forum {
  private String topic;

  // TODO: add a constructor that accepts a topic and sets the private field topic

  Forum (String topic)
  {
    topic  = this. 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) {
    // TODO: set and add the private fields
      firstName = this.firstName;
    lastName = this.lastName;
  }

  // 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
  ForumPost(User author, String title, String description)
  {
    author = this.author;
    title = this.title;
    description = this.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("Schwartz","Prince");
    // TODO: initialize the forum post with the user created above and a title and description of your choice
    ForumPost post = new ForumPost(User"Java","Good" );
    forum.addPost(post);

// */
  }

}

2 Answers

james south
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
james south
Front End Web Development Techdegree Graduate 33,271 Points

in addition to fixing your use of this, in main your call to forum post is ForumPost(User"Java","Good" ) when you want (author, 'java', 'good'), author being your User object. then you have this line in main:

 // TODO: pass in the first name and last name that are in the args parameter
    User author = new User("Schwartz","Prince");

this is not asking for your first and last name. is it asking for the first and second elements in args (the String[] parameter of main) which would be passed in if you were calling this program from the command line. so args[0], args[1].

Isaiah Marin
Isaiah Marin
11,971 Points

The problem is how you're using the "this" keyword. Remember that in this case it's referencing your object. So you need to use "this.topic = topic" to assign the value to your private member. He is an example for your Forum.java file. I also left comments within the file to hopefully help your understanding.

public class Forum {

 // Here is your private String member that to needs to be assigned in the Forum Constructor.
  private String topic;

  // TODO: add a constructor that accepts a topic and sets the private field topic
  public Forum (String topic) {
 /* Note: "this.topic" references your private String topic.
The "= topic;" gets the String value passed as an argument in your constructor. */
    this.topic = topic; 

  }

  public String getTopic() {
    return topic;
  }

/*
  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()
    );
  }*/


}

Hope this helps.

Schwartz Prince
Schwartz Prince
Courses Plus Student 2,132 Points

Thank you Isaiah for your help. Now the program works very well. I have placed this in the wrong place and now I found the mistake. Thanks again for helping.