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
Get step-by-step solutions from verified subject matter experts
