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

Maxwell Solesbee
Maxwell Solesbee
1,101 Points

Final exercise fourth task. Totally stumped right now.

Hello!

I have been at this exercise for hours and googling the issue, but to no avail. I re-watched the past videos to see if I missed something but, at least for me, I cannot find the reference to this dilemma.

Beginning forum example java.lang.NullPointerException at Forum.addPost(Forum.java:18) at Main.main(Main.java:16) at JavaTester.run(JavaTester.java:185) at JavaTester.main(JavaTester.java:45)

I am at the fourth step of this exercise. Hope to get some assistance on what may be causing the problem! I am assuming it has to do with the user Author variable.

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


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

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

  }

  public String getFirstName() {
    return firstName;
  }

  public String getLastName() {
    return lastName;
  }
  // TODO: add getters for firstName and lastName

}
ForumPost.java
public class ForumPost {
  private User author;
  private String title;
  private String description;

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

  public User getAuthor() {
    return this.author;
  }

  public String getTitle() {
    return this.title;
  }

  public String getDescription() {
    return this.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);
    }

    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
    ForumPost post = new ForumPost(author, "My title.", "Stuff goes here.");
    forum.addPost(post);
  }

}
Nivard Rikken
Nivard Rikken
5,377 Points

I would suggest to check some of your constructors, the goal is to set the private fields to the passed in values.

Forum.java

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

The TODO wants you to set the private field topic.

public Forum(String topic){
   this.topic = topic ;
  }

Same for the ForumPost constructor: ForumPost .java

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

Set the private fields with the parameter values

public ForumPost(User author, String title, String description) {
      this.author = author;
      this.title = title;
      this.description = description;
  }

User.java

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

  }

Set the private fields with the parameter values

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

  }

hope it helps!

1 Answer

Maxwell Solesbee
Maxwell Solesbee
1,101 Points

hope it helps!

Thanks a bunch Nivard! It worked. Even in my researching I couldnโ€™t fully understand how to properly use โ€˜thisโ€™ variable, but your explanation helped clear things up!