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 trialSchwartz Prince
Courses Plus Student 2,132 PointsCouldn'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
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()
);
}
}
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;
}
}
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;
}
}
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
Front End Web Development Techdegree Graduate 33,271 Pointsin 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
11,971 PointsThe 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
Courses Plus Student 2,132 PointsThank 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.
Schwartz Prince
Courses Plus Student 2,132 PointsSchwartz Prince
Courses Plus Student 2,132 PointsThank you for your help James. It worked now