Question: A JAVA problem: Create a class called Person. Person should have (instance variables should be private): private String name; private int age; 2 Constructors: Default

A JAVA problem:

Create a class called Person. Person should have (instance variables should be private): private String name; private int age; 2 Constructors: Default constructor (no parameters) Constructor which takes 2 parameters for name and age Methods: toString equals Appropriate set and get methods for setting and accessing the Person data. ---------------------------------------------------------- Create a class called Student which extends Person. Student has the private data: private String major; private double gpa; Similar to the Person class, add get and set methods. Add 2 constructors: default constructor Constructor which sets all necessary data in the Person and Student class (name, age, major and gpa) Methods: toString equals ------------------------------------------------------------ Create a Family class with the following: Constructor: Family (int size_of_family) Family contains an array of Person that is the size of "size_of_family". Family has a method called: void addPerson(Person p); The addPerson will call equals to make sure that the Person p hasn't already been added. If a duplicate is found, print out a message and continue without adding the duplicate person. void printOutFamily(); This routine calls all of the toString methods in the family. --------------------------------------------------------------

What output should be: created name=Fred Flintstone age=50 Person: name=Fred Flintstone age=50 is already in family created name=Fred Flintstone age=50 major=Math gpa=3.1 created name=George age=21 major=Politics gpa=3.1 Family Array is already full Family Array is already full Family Array is already full ****** family listing: name=Fred Flintstone age=50 name=Fred Flintstone age=50 major=Math gpa=3.1 name=Wilma Flintstone age=48 name=Georgie age=21 major=Politics gpa=3.1 name=George age=21 major=Politics gpa=3.1 name=John age=18 major=Geology gpa=2.9 name=Jane age=21 major=Music gpa=3.2 name=Tarzan age=22 major=Gymnastics gpa=4.0

My output- Why am I getting null and 0 for GPA and major? Why am I getting that George is already in family and only two "Family array already full" messages?

created Person [name=Fred Flintstone, age=50]

created major= Math gpa= 3.1

Person: name= Fred Flintstone age= 50 is already in family

created major= Politics gpa= 3.1

Person: name= George age= 21 is already in family

Family array already full

Family array already full

****** family listing:

Name= Fred Flintstone Age= 50 major= null gpa= 0.0

Name= Fred Flintstone Age= 50 major= null gpa= 0.0

Name= Wilma Flintstone Age= 48 major= null gpa= 0.0

Name= George Age= 21 major= null gpa= 0.0

Name= John Age= 18 major= null gpa= 0.0

Name= Jane Age= 21 major= null gpa= 0.0

Name= Tarzan Age= 22 major= null gpa= 0.0

Name= Jim Age= 21 major= null gpa= 0.0

My code:

***********************************************************************

package person_problem;

public class Student extends Person {

public String major;

public double gpa;

public Student() {

super();

}

public Student(String name, int age, String major, double gpa) {

super(name, age);

this.major = major;

this.gpa = gpa;

}

public String getMajor() {

return major;

}

public void setMajor(String major) {

this.major = major;

}

public double getGpa() {

return gpa;

}

public void setGpa(double gpa) {

this.gpa = gpa;

}

public boolean equals(Object o) {

if (o instanceof Student) {

Student s = (Student) o;

if (s.getAge() == this.getAge() && s.getName().equals(this.getName()))

return true;

else

return false;

} else if (o instanceof Person) {

Person s = (Person) o;

this.equals(s);

}

return false;

}

@Override

public String toString() {

return (" major= " + major + " gpa= " + gpa );

}

}

********************************************************************

package person_problem;

import java.util.Arrays;

public class Family extends Person {

private int size_of_family;

Person p[];

int counter = 0;

public int getSize_of_family() {

return size_of_family;

}

public void setSize_of_family(int size_of_family) {

this.size_of_family = size_of_family;

}

public Family(int size_of_family) {

this.size_of_family = size_of_family;

p = new Person[this.size_of_family];

}

void addPerson(Person p) {

boolean flag = false;

if (counter >= size_of_family) {

if (size_of_family >= counter) {

System.out.println("Family array already full");

}

return;

}

for (int i = 0; i < counter; i++) {

if (this.p[i].equals(p)) {

flag = true;

System.out.println("Person: " + "name= " + p.getName() + " " + "age= " + p.getAge() + " "

+ "is already in family");

return;

}

}

// System.out.println(counter);

// break;

this.p[counter] = new Person();

this.p[counter].setAge(p.getAge());

this.p[counter].setName(p.getName());

counter++;

}

public void printOutFamily() {

this.toString();

}

@Override

public String toString() {

for (int i = 0; i < counter; i++) {

Student s;

s = new Student();

System.out.println("Name= " + p[i].getName() + " " + "Age= " + p[i].getAge() + s.toString());

}

return null;

}

}

****************************************************************************************************************

package person_problem;

public class Person {

private String name;

private int age;

public Person() {

}

public Person(String name, int age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

public boolean equals(Object obj) {

if (obj == null)

return false;

if (getClass() != obj.getClass()) {

Person p = (Person) obj;

if (name.equals(p.name) && age == p.age)

return true;

}

return false;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public static void main(String[] args) {

Family f = new Family(8);

Person fred = new Person("Fred Flintstone", 50);

System.out.println("created " + fred);

f.addPerson(fred);

f.addPerson(fred);

Student fredStudent = new Student("Fred Flintstone", 50, "Math", 3.1);

System.out.println("created " + fredStudent);

f.addPerson(fredStudent);

Person wilma = new Person("Wilma Flintstone", 48);

f.addPerson(wilma);

Student george = new Student("George", 21, "Politics", 3.1);

System.out.println("created " + george);

f.addPerson(george);

george.setName("Georgie");

f.addPerson(new Student("George", 21, "Politics", 3.1));

f.addPerson(new Student("John", 18, "Geology", 2.9));

f.addPerson(new Student("Jane", 21, "Music", 3.2));

f.addPerson(new Student("Tarzan", 22, "Gymnastics", 4.0));

f.addPerson(new Student("Jim", 21, "Physics", 2.5));

f.addPerson(new Person("Robert", 18));

f.addPerson(new Person("Clemente", 32));

System.out.println("****** family listing: ");

f.printOutFamily();

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!