67.4k views
8 votes
Complete the code for this PiggyBank class. I have also included a main program (TestPiggy) for you to use to test your class. When I grade your PiggyBank class, I will use this exact same main program so be sure your class compiles and runs with it. I have also attached a screenshot of what your output should look like. Note the way the numeric values are formatted; yours should be the same.

public class PiggyBank implements Measurable, Comparable {
private int numNickels, numPennies, numDimes, numQuarters;
// to do; complete the constructor
public PiggyBank() {
}
// to do; complete the constructor
public PiggyBank(int quarters, int dimes, int nickels, int pennies){
}
// to do; it just returns 0; code it so that it returns the monetary
// amount of the piggy bank
public double getMeasure(){
return 0.0;
}
// to do; it just returns 0; code it so that it correctly compares
public int compareTo(Object other){
return 0;
}
// to do; it just returns a blank string right now
public String toString(){
return "";
}
}
public class Data{
public static double average(Measurable[] objects){
double sum = 0;
for (Measurable obj : objects){
sum = sum + obj.getMeasure();
}
if (objects.length > 0){return sum / objects.length;}
else {return 0;}
}
}
import java.text.NumberFormat;
import java.util.Arrays;
public class TestPiggy {
public static void main(String[] args) {
PiggyBank [] banks = new PiggyBank[10];
banks[0] = new PiggyBank(5, 10, 19, 32);
banks[1] = new PiggyBank(6, 0, 2, 1);
banks[2] = new PiggyBank(0, 20, 15, 3);
banks[3] = new PiggyBank(1, 3, 99, 591);
banks[4] = new PiggyBank(0, 0, 10, 0);
banks[5] = new PiggyBank(15, 3, 0, 25);
banks[6] = new PiggyBank();
banks[7] = new PiggyBank(11, 3, 0, 1);
banks[8] = new PiggyBank(0, 0, 1, 5);
banks[9] = new PiggyBank(8, 10, 20, 100);
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String moneyString = formatter.format(Data.average(banks));
System.out.println ("The average of all the piggy banks is " + moneyString);
Arrays.sort(banks);
System.out.println ("The piggy banks in sorted order, smallest to largest, are:");
for (int i = 0; i < 10; i++) System.out.println (banks[i]);
}
}

1 Answer

9 votes

Answer:

Step-by-step explanation:

All of the following changes were made as per the comments on the code. The only missing change was the compareTo method which did not exactly state what the comparison needed to be, there is only one parameter being passed and no indication as to what it needed to be compared to so it is simply comparing the argument to the object in question (this)

public class PiggyBank implements Measurable, Comparable {

private int numNickels, numPennies, numDimes, numQuarters;

// to do; complete the constructor

public PiggyBank() {

numNickels = 0;

numPennies = 0;

numDimes = 0;

numQuarters = 0;

}

// to do; complete the constructor

public PiggyBank(int quarters, int dimes, int nickels, int pennies){

numQuarters = quarters;

numDimes = dimes;

numNickels = nickels;

numPennies = pennies;

}

// to do; it just returns 0; code it so that it returns the monetary

// amount of the piggy bank

public double getMeasure(){

double total = (numQuarters * 0.25) + (numDimes * 0.10) + (numNickels * 0.05) + (numPennies * 0.01);

return total;

}

// to do; it just returns 0; code it so that it correctly compares

public int compareTo(Object other){

if (this == other) {

return 1;

} else {

return 0;

}

}

// to do; it just returns a blank string right now

public String toString(int x){

return String.valueOf(x);

}

}

public class Data{

public static double average(Measurable[] objects){

double sum = 0;

for (Measurable obj : objects){

sum = sum + obj.getMeasure();

}

if (objects.length > 0){return sum / objects.length;}

else {return 0;}

}

}

import java.text.NumberFormat;

import java.util.Arrays;

public class TestPiggy {

public static void main(String[] args) {

PiggyBank [] banks = new PiggyBank[10];

banks[0] = new PiggyBank(5, 10, 19, 32);

banks[1] = new PiggyBank(6, 0, 2, 1);

banks[2] = new PiggyBank(0, 20, 15, 3);

banks[3] = new PiggyBank(1, 3, 99, 591);

banks[4] = new PiggyBank(0, 0, 10, 0);

banks[5] = new PiggyBank(15, 3, 0, 25);

banks[6] = new PiggyBank();

banks[7] = new PiggyBank(11, 3, 0, 1);

banks[8] = new PiggyBank(0, 0, 1, 5);

banks[9] = new PiggyBank(8, 10, 20, 100);

NumberFormat formatter = NumberFormat.getCurrencyInstance();

String moneyString = formatter.format(Data.average(banks));

System.out.println ("The average of all the piggy banks is " + moneyString);

Arrays.sort(banks);

System.out.println ("The piggy banks in sorted order, smallest to largest, are:");

for (int i = 0; i < 10; i++) System.out.println (banks[i]);

}

}

User Tessa
by
3.9k points