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

James Thomas
James Thomas
6,452 Points

getfirstname

Completely and utterly stuck on the last part of the ForumPostChallenge.

I need to 'fix' the code in Main.java.

Code is attached, it may be that I've spent 4.5 hours on treehouse and now my brain is fried but I have complete block on this. No idea where to begin, I'm being sucked into a whirlpool of java objects and can't figure out the necessary hierarchy.

Unfortunately, and something that's a real flaw on this site is that there are zero hints, absolutely no support whatsoever if you're stuck in a coding challenge and rewatching the previous videos is no help, you must simply depend on the kindness of community posters.

So if anyone could talk me through this I'd appreciate it.

Thanks,

Forum.java
public class Forum {
  private String topic;

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


  public String getTopic() {
    return topic;
  }

  public Forum(String topic) {
    this.topic = 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 {
  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;
  }

    public String getFirstName() {
    return this.firstName;
    }

    public String getLastName() {
    return this.lastName;
    }
    // TODO: set and add the private fields

  // TODO: add getters for firstName and 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 User getAuthor() {
    return author;
  }

  public String getTitle() {
    return title;
  }

  public String getDescription() {
    return description;
  }

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

}

1 Answer

james south
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
james south
Front End Web Development Techdegree Graduate 33,271 Points
    // TODO: pass in the first name and last name that are in the args parameter
    User author = new User(ForumPost.getAuthor().getFirstName(), User.getLastName());
    // TODO: initialize the forum post with the user created above and a title and description of your choice
    ForumPost post = new ForumPost();

in the first line you have created a circular reference - you are trying to feed to the User constructor the return of getAuthor.getFirstName, but those come from the User constructor in the first place. what the comment above the first line is asking for is the first and second elements of the args array, as in public static void Main(String[] args). those are what you pass to the User constructor. then, the next line where you call forumPost, you aren't passing any arguments, so you need to provide those.