TO DO in JAVA: Finish the compareTo() method in the Insurance class. package itp
ID: 3913409 • Letter: T
Question
TO DO in JAVA: Finish the compareTo() method in the Insurance class.
package itp120mod6;
import java.text.*;
// note that this is an abstract class (see p455 of your text)
// I do not want any one to create a generic Insurance instance
// (we only sell Auto, Life, and Health) but so as not to repeat
// common fields in those , we move them up one hierarchy level
// and make a generic Inurance class
// implements the interface Comparable so I can define how to order
// or sort Insurance objects
public abstract class Insurance implements Comparable<Insurance>
{
// NOTE: these fields are protected!!!!! If I am to inherit
// these , they must be protected (private allows NO other classes
// to use them) - protected means this class and any class that inherits
// from this one can use these
protected Customer customer;
protected double yearlyRate;
protected int policyNumber;
// for currency output
NumberFormat currency = NumberFormat.getCurrencyInstance();
// a static variable used to make the insurance id unique
public static int num = 1000;
// full constructor - automatically creates a new Insurance id
public Insurance (Customer cust)
{
customer = cust;
policyNumber=num;
num++;
}
// used for reading from a file where policy number and rate already set
public Insurance (Customer cust, int polNum, double yrRate)
{
customer = cust;
policyNumber=polNum;
yearlyRate = yrRate;
}
// the empty constructor but still sets a unique id
public Insurance ()
{
policyNumber=num;
num++;
}
// the calcRate method is used to set the yearlyRate
// NOTE: this is an abstract class. That means it can not be used (has no body)
// but by putting here, we require any class that inherits from the Insurance class
// to fully implement this method if they want to be a concrete class
public abstract void calcRate();
// toString method. Note - we let the customer write themself out since they have their own toString method
// a class should only write out their fields in the toString method
public String toString ()
{
return (customer.toString() + " with policy number " + policyNumber + " has a yearly rate of " + currency.format(yearlyRate));
}
// getters and setters
public Customer getCustomer() {
return customer;
}
public int getPolicyNumber() {
return policyNumber;
}
public double getYearlyRate() {
return yearlyRate;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public void setPolicyNumber(int policyNumber) {
this.policyNumber = policyNumber;
}
public void setYearlyRate(double yearlyRate) {
this.yearlyRate = yearlyRate;
}
// required by the Comparable interface. Describes how to compare two Insurance instances
// In this one, we want to compare policy numbers
// Look at how we did the one in the Customer blueprint
// Look at the one in the search_sort.Account class
// Note the difference if you are sorting on primitives versus objects
public int compareTo(Insurance ins)
{
// you get to write this!!
return -1;
}
}
----------------------------------------------------------------------------------------------------------------------------------------------
TO DO in JAVA: Finish the code for the methods in TrackInsurance so that all the menu items work.
package itp120mod6;
import java.util.*;
public class TrackInsurance extends Object {
public static Scanner scan = new Scanner(System.in);
// method that runs first
public static void main(String[] args) throws Exception {
// make an ArrayList of customers and insurance policies
ArrayList<Customer> cust = new ArrayList<Customer>();
// note - the ArrayList below can hold Insurance objects
// but with inheritance, that includes Auto, Health, Life and Art
ArrayList<Insurance> ins = new ArrayList<Insurance>();
// create some fake customers (used for testing the program)
Customer c = new Customer("Duck", "Donald");
Customer c1 = new Customer("Mouse", "Minnie");
Customer c2 = new Customer("Mouse", "Mickey");
// add the customers to the array list
cust.add(c2);
cust.add(c1);
cust.add(c);
// make and add some insurance policies to the ArrayList
ins.add(new AutoInsurance(c, 2));
ins.add(new AutoInsurance(c1, 3));
/*ins.add(new HealthInsurance(c, 5));
ins.add(new HealthInsurance(c2, 1));
ins.add(new LifeInsurance(c, 30000, 65));
ins.add(new LifeInsurance(c1, 400000, 34));*/
// add your ArtInsurance instances here
//ins.add(new ArtInsurance(.....));
int choice = 0;
while (choice >= 0) {
choice = menu();
if (choice == 1)
printAllCustomers(cust);
else if (choice == 2)
printAllInsurance(ins);
else if (choice == 3) {
System.out
.println("Now lets find the information for a certain policy number");
System.out.println("What policy number do you want to find?");
int num = scan.nextInt();
printPolicy(ins, num);
} else if (choice == 4) {
System.out
.println("Now let's find all of the policies for a given customer");
System.out.println("What is the customer id?");
int custNum = scan.nextInt();
getCustomer(ins, custNum);
} else if (choice == 5)
sortCustNum(ins);
else if (choice == 6)
sortPolNum(ins);
else if (choice == 7) {
System.out.println("Bye!!!!!");
choice = -1;
}
} // end while
}
public static int menu() {
System.out.println("Choice:");
System.out
.println(" 1. Print all customers (call the toString method)");
System.out
.println(" 2. Print all insurance information (call the toString method)");
System.out
.println(" 3. Given a policy number, print the policy information");
System.out
.println(" 4. Find all of the policies for a given customer");
System.out
.println(" 5. Sort the insurance policy information by customer number");
System.out
.println(" 6. Sort the insurance policy information by policy number");
System.out.println(" 7. QUIT!! ");
System.out.println(" CHOICE:");
int value = scan.nextInt();
return value;
}
// write a printAllCusts method that prints out the toString method for all
// of the customers
public static void printAllCustomers(ArrayList<Customer> cust) {
}
// write a printAllInsurance method that prints out the toString method for
// all of the insurance policies
public static void printAllInsurance(ArrayList<Insurance> insure) {
// print out all of the information
for (Insurance ins : insure)
System.out.println(ins.toString());
}
// write a printPolicy method that prints the information for the policy
// number
// passed in or the statement "That policy does not exist" if it is not
// present
public static void printPolicy(ArrayList<Insurance> insure, int num) {
}
// write a getCustomer method that prints the information for all of the
// policies for a given customer
// that customer number is passed in. If none, have it print
// "There are no policies for that customer"
public static void getCustomer(ArrayList<Insurance> insure, int num) {
}
// write a method that sorts the policies by policy number
// look at the example in the search_sort package
public static void sortPolNum(ArrayList<Insurance> insure) {
Collections.sort(insure);
}
// write a method that sorts the policies by customer number
// this one is tougher since you can not use the Collections.sort() method
// so you need to just slug out some code.
// Look at the bubble sort from the SortByHand in the search_sort package
// You will want to do something similar
// Here is some pseudocode to help
//
public static void sortCustNum(ArrayList<Insurance> insure) {
{
for (int out = insure.size() - 1; out > 1; out--)
for (int in = 0; in < out; in++) {
// get the first insurance policy
// get the customer from that insurance policy
// get the customer number from that insurance policy
// get the second insurance policy
// get the customer from that insurance policy
// get the customer number from that insurance policy
// We want to check to see if the second customer number is
// less than the first one
// NOTE: When comparing customer numbers:
// SortByHand uses Strings so it uses the compareTo()
// method.
// We are comparing integers so we can just use <
// if the second customer number is less than the first one
// swap the two insurance policies in the original "insure"
// ArrayList
// check out the SortByHand to see how to swap.
}
}
}
}
Explanation / Answer
Please find the compareTo() implementation below.
CODE
===================
public int compareTo(Insurance ins) {
if (this.policyNumber > ins.policyNumber) {
return 1;
} else if (this.policyNumber == ins.policyNumber) {
return 0;
}
return -1;
}
------------------------------------------------------------------------------------------------------------------------------------
// write a printAllCusts method that prints out the toString method for all
// of the customers
public static void printAllCustomers(ArrayList<Customer> cust) {
for(Customer c : cust) {
System.out.println(c.toString());
}
}
// write a printAllInsurance method that prints out the toString method for
// all of the insurance policies
public static void printAllInsurance(ArrayList<Insurance> insure) {
for (Insurance ins : insure)
System.out.println(ins.toString());
}
// write a printPolicy method that prints the information for the policy
// number
// passed in or the statement "That policy does not exist" if it is not
// present
public static void printPolicy(ArrayList<Insurance> insure, int num) {
for(Insurance i : insure)
if(i.policyNumber == num) {
System.out.println(i.toString());
return;
}
}
System.out.println("That policy does not exist!!");
}
// write a getCustomer method that prints the information for all of the policies for a given customer
// that customer number is passed in. If none, have it print
// "There are no policies for that customer"
public static void getCustomer(ArrayList<Insurance> insure, int num) {
for(Insurance i : insure)
if(i.getCustomer().getCustomerNumber() == num) {
System.out.println(i.toString());
return;
}
}
System.out.println("There are no policies for that customer!!");
}
public static void sortCustNum(ArrayList<Insurance> insure) {
for (int out = insure.size() - 1; out > 1; out--) {
// get the first insurance policy
// get the customer from that insurance policy
// get the customer number from that insurance policy
Insurance first = insure.get(i);
int customerNumber1 = first.getCustomer().getCustomerNumber();
for (int in = 0; in < out; in++) {
// get the second insurance policy
// get the customer from that insurance policy
// get the customer number from that insurance policy
Insurance second = insure.get(j);
int customerNumber2 = second.getCustomer().getCustomerNumber();
if(customerNumber1 > customerNumber2) {
insure.set(i, second);
insure.set(j, first);
}
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.