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 trialThomas Schuerlein
5,752 PointsCode Challenge Forum task 4 of 4
I've been trying for a while and can't understand what I am doing wrong
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;
}
private 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()
);
}
}
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
}
public String getLastName() {
return lastName;
}
public String getFirstName() {
return firstName;
}
// TODO: add getters for firstName and lastName
}
public class ForumPost {
private User author;
private String title;
private String description;
public ForumPost(User author, String title, String description) {
this.author = author;
this.description = description;
this.title = title;
}
// 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 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");
User author = new User(args[0], args[1]);
ForumPost post = new ForumPost(author, "another day", "Wahoo!");
Forum.addPost(post);
}
}
1 Answer
andren
28,558 PointsThere are two issues I can see in your code:
You have made the constructor in the
forum
class private. Which means that it cannot actually be called from any other class, which makes it somewhat useless as a constructor.On the last line of
Main.java
you have changedforum
toForum
. Meaning that you are referencing theForum
class rather than theforum
object created above. This is not a change you were supposed to make.
If you fix the Forum
constructor so that it looks like this:
public Forum(String topic) { // Changed private to public
this.topic = topic;
}
And fix the last line in Main.Java
so that it looks like this:
forum.addPost(post); // Changed Forum to forum
Then your code should work.
Thomas Schuerlein
5,752 PointsThomas Schuerlein
5,752 PointsThank you for the help