Write a program that allows you to write and read records of type PetRecord to a file. The program asks the user to choose between reading and writing from a file. In either case, the program next asks for the file name. If the user asked to write to a file, they can enter as many records as desired. If the user asked to read from a file, they are shown all of the records in the file. Be sure that the records do not scroll by so quickly that the user cannot read them. Redefine the class PetRecord so that it is Serializable. Provide options in your program to output the following information to the screen: the name and weight of the largest pet, the name and weight of the smallest pet, the name and age of the youngest pet, and the name and age of the oldest pet. Could there be pets with the same name, weight and age?
//Pet class
import java.io.Serializable;
import java.util.Objects;
public class Pet implements Serializable {
private String name;
private int age; //in years
private double weight; //in pounds
//Display 4.15 A Class for Pet Records (part 2 of 4)
public String toString() {
return ("Name: " + name + "nAge: " + age + " years old"
+ "nWeight: " + weight + " poundsn");
}
public Pet(String initialName, int initialAge,
double initialWeight) {
name = initialName;
if ((initialAge < 0) || (initialWeight < 0)) {
System.out.println("Error: Negative age or weight.");
System.exit(0);
} else {
age = initialAge;
weight = initialWeight;
}
}
public void set(String newName, int newAge, double newWeight) {
name = newName;
if ((newAge < 0) || (newWeight < 0)) {
System.out.println("Error: Negative age or weight.");
System.exit(0);
} else {
age = newAge;
weight = newWeight;
}
}
public Pet(String initialName) {
name = initialName;
age = 0;
weight = 0;
}
public void setName(String newName) {
name = newName;
}
public Pet(int initialAge) {
name = "No name yet.";
weight = 0;
if (initialAge < 0) {
System.out.println("Error: Negative age.");
System.exit(0);
} else {
age = initialAge;
}
}
public void setAge(int newAge) {
if (newAge < 0) {
System.out.println("Error: Negative age.");
System.exit(0);
} else {
age = newAge;
}
}
public Pet(double initialWeight) {
name = "No name yet";
age = 0;
if (initialWeight < 0) {
System.out.println("Error: Negative weight.");
System.exit(0);
} else {
weight = initialWeight;
}
}
public void setWeight(double newWeight) {
if (newWeight < 0) {
System.out.println("Error: Negative weight.");
System.exit(0);
} else {
weight = newWeight;
}
}
public boolean equals(Object other) {
Pet otherPet;
if (other == null || other.getClass() != this.getClass()) {
return false;
} else {
otherPet = (Pet) other;
return otherPet.name.equals(this.name)
&& otherPet.weight == this.weight
&& otherPet.age == this.age;
}
}
public String toCSV() //useful for text file output!
{
return String.format("%s,%.1f,%d",
this.name, this.weight, this.age);
}
public Pet() {
name = "No name yet.";
age = 0;
weight = 0;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public double getWeight() {
return weight;
}
}//end of Pet class