Eclipse is showing errors on my Person2 class and I\'m not sure what I\'m doing
ID: 3642395 • Letter: E
Question
Eclipse is showing errors on my Person2 class and I'm not sure what I'm doing wrongHere is the assignment that I did:
Write a second Person class that will have an instance variable of type Name instead of a String as in project 2. You will use the Name class that was written in project 1. The methods of the Name class become available to solve the methods of the Person class. Use the same methods of the first Person class for this new Person class.
Ok, here are the three classes:
Person2 class, which is the one I need help on and I'm not sure if I did it right in the first place, but I'm get errors on the setFirstName:
import java.util.Scanner;
public class Person2 {
private Name name;
private int age;
Scanner keyboard = new Scanner(System.in);
public Person2()
{}
public Person2(Name n,int a)
{
name.setFirstName(n);
age=a;
}
public String toString()
{
return (name.toString() + " " + age);
}
public void setName(Name name)
{
this.name.setFirstName(name);
}
public void setAge(int a)
{
age=a;
}
public void setPerson(Name n,int a)
{
name.setFirstName(n);
age=a;
}
public void read()
{
name.readName();
System.out.println("Please enter age");
age = keyboard.nextInt();
}
public Name getName()
{
return name;
}
public int getAge()
{
return age;
}
public boolean equals(Person2 n)
{
return (this.name.equals(n.name)&&
this.age==n.age);
}
public boolean hasSameName(Person2 n)
{return name.equals(n.name);
}
public boolean hasSameAge(Person2 n)
{return age==n.age;
}
public boolean isOlderThan(Person2 n)
{return age>n.age;
}
}
First Person Class:
import java.util.Scanner;
public class Person {
private String name;
private int age;
Scanner keyboard = new Scanner(System.in);
public Person()
{}
public Person(String n,int a)
{
name=n;
age=a;
}
public String toString()
{
return (name + " " + age);
}
public void setName(String first)
{
name = first;
}
public void setAge(int a)
{
age=a;
}
public void setPerson(String n,int a)
{
name=n;
age=a;
}
public void read()
{
System.out.println("Please enter first name");
name = keyboard.nextLine();
System.out.println("Please enter age");
age = keyboard.nextInt();
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public boolean equals(Person n)
{
return (this.name.equalsIgnoreCase(n.name)&&
this.age==n.age);
}
public boolean hasSameName(Person n)
{return name==n.name;
}
public boolean hasSameAge(Person n)
{return age==n.age;
}
public boolean isOlderThan(Person n)
{return age>n.age;
}
}
Name Class
import java.util.Scanner;
public class Name {
private String firstName, middleName, lastName;
public Name() {
firstName = "";
middleName = "";
lastName = "";
}
public Name(String f, String l) {
firstName = f;
middleName = "";
lastName = l;
}
public Name(String f, String m, String l) {
firstName = f;
middleName = m;
lastName = l;
}
public String getFirstName() {
return firstName;
}
public String getMiddleName() {
return middleName;
}
public String getLastName() {
return lastName;
}
public void setFirstName(String f) {
firstName = f;
}
public void setMiddleName(String m) {
middleName = m;
}
public void setLastName(String l) {
lastName = l;
}
public void changeNameTo(String f, String m, String l) {
firstName = f;
middleName = m;
lastName = l;
}
public void changeNameTo(Name n) {
firstName = n.getFirstName();
middleName = n.getMiddleName();
lastName = n.getLastName();
}
public Name add(Name n) {
Name answer = new Name();
answer.firstName = n.firstName;
answer.middleName = n.middleName;
answer.lastName = this.lastName + "-" + n.lastName;
return answer;
}
public String getFullNameToUpperCase() {
return (toString()).toUpperCase();
}
public String toString() {
return firstName + " " + middleName + " " + lastName;
}
public boolean equals(Name n) {
return firstName.equals(n.getFirstName());
}
public void readName() {
Scanner sc = new Scanner(System.in);
setFirstName(sc.next());
setMiddleName(sc.next());
setLastName(sc.next());
}}
Explanation / Answer
setFirstName() in the Name class only accepts Strings as arguments. So there are two ways to go about fixing the error, I'm not sure which way you're supposed to do it for the assignment.
You can either change the parameters for the functions so that you feed them Strings instead of Name objects as so:
public Person2(String n,int a)
{
name.setFirstName(n);
age=a;
}
public void setName(String name)
{
this.name.setFirstName(name);
}
public void setPerson(String n,int a)
{
name.setFirstName(n);
age=a;
}
Or if you have to use Name objects as parameters rather than strings, you can do this instead:
public Person2(Name n,int a)
{
name.setFirstName(n.getFirstName()); //Since setFirstName() only accepts strings, you need to get the first name String from the Name object using getFirstName()
age=a;
}
public void setName(Name name)
{
this.name.setFirstName(name.getFirstName()); //same goes for here
}
public void setPerson(Name n,int a)
{
name.setFirstName(n.getFirstName()); //and here
age=a;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.