Computer Science 210
Data Structures
Fall 2016, Siena College
PocketChange BlueJ Project
Click here to download a BlueJ project for PocketChange.
PocketChange Source Code
The Java source code for PocketChange is below. Click on a file name to download it.
/* $Id: PocketChange.java 893 2009-09-14 02:58:54Z terescoj $ */
/**
Pocket change simulator
@author Jim Teresco, terescoj@cs.williams.edu
*/
import structure.*;
public class PocketChange {
/** vector of coins in our pocket */
protected Vector coins;
/**
Create an empty pocket
*/
public PocketChange() {
coins = new Vector();
}
/**
add a coin to the pocket
@param coin value of coin to add
*/
public void add(int coin) {
coins.add(new Integer(coin));
}
/**
remove a coin from the pocket
@param coin value of coin to remove
*/
public void remove(int coin) {
// why won't this alone work?
// coins.remove(new Integer(coin));
for (int i=0; i<coins.size(); i++) {
int value = ((Integer)coins.get(i)).intValue();
if (value == coin) {
// we found the right kind of coin
coins.remove(i);
// don't keep looking!
return;
}
}
// if we get here, it's a problem -- we didn't have the coin we wanted
System.out.println("Had no coin of value " + coin);
}
/**
determine the number of coins in the pocket
@return the number of coins in the pocket
*/
public int numCoins() {
return coins.size();
}
/**
determing the total value of coins in the pocket
@return sum of the values of all coins in the pocket
*/
public int value() {
int total = 0;
for (int i=0; i<coins.size(); i++) {
total += ((Integer)coins.get(i)).intValue();
}
return total;
}
/**
try out our pocket change class
@param args command-line arguments
*/
public static void main(String[] args) {
// construct the pocket
PocketChange pocket = new PocketChange();
// make some transactions
pocket.add(1);
pocket.add(10);
pocket.add(5);
pocket.add(5);
pocket.add(25);
pocket.add(1);
pocket.add(10);
pocket.add(10);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
pocket.remove(25);
pocket.remove(10);
pocket.remove(10);
pocket.add(1);
pocket.add(1);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
}
}
/* $Id: PocketChangeAutobox.java 893 2009-09-14 02:58:54Z terescoj $ */
/**
Pocket change simulator demonstrating autoboxing
@author Jim Teresco, terescoj@cs.williams.edu
*/
import structure.*;
public class PocketChangeAutobox {
/** vector of coins in our pocket */
protected Vector coins;
/**
Create an empty pocket
*/
public PocketChangeAutobox() {
coins = new Vector();
}
/**
add a coin to the pocket
@param coin value of coin to add
*/
public void add(int coin) {
// autoboxing - the int is automatically packed up in an Integer
coins.add(coin);
}
/**
remove a coin from the pocket
@param coin value of coin to remove
*/
public void remove(int coin) {
// why won't this alone work?
// coins.remove(new Integer(coin));
for (int i=0; i<coins.size(); i++) {
// we have to cast Object to Integer, but Java will autounbox it
int value = (Integer)coins.get(i);
if (value == coin) {
// we found the right kind of coin
coins.remove(i);
// don't keep looking!
return;
}
}
// if we get here, it's a problem -- we didn't have the coin we wanted
System.out.println("Had no coin of value " + coin);
}
/**
determine the number of coins in the pocket
@return the number of coins in the pocket
*/
public int numCoins() {
return coins.size();
}
/**
determing the total value of coins in the pocket
@return sum of the values of all coins in the pocket
*/
public int value() {
int total = 0;
for (int i=0; i<coins.size(); i++) {
// again, autounboxing after the cast to Integer
total += (Integer)coins.get(i);
}
return total;
}
/**
try out our pocket change class
@param args command-line arguments
*/
public static void main(String[] args) {
// construct the pocket
PocketChange pocket = new PocketChange();
// make some transactions
pocket.add(1);
pocket.add(10);
pocket.add(5);
pocket.add(5);
pocket.add(25);
pocket.add(1);
pocket.add(10);
pocket.add(10);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
pocket.remove(25);
pocket.remove(10);
pocket.remove(10);
pocket.add(1);
pocket.add(1);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
}
}
/* $Id: PocketChangeT.java 909 2009-09-20 18:33:20Z terescoj $ */
/**
Pocket change simulator demonstrating autoboxing, generic Vectors
@author Jim Teresco, terescoj@cs.williams.edu
*/
import structure5.*;
public class PocketChangeT {
/** vector of coins in our pocket */
protected Vector<Integer> coins;
/**
Create an empty pocket
*/
public PocketChangeT() {
coins = new Vector<Integer>();
}
/**
add a coin to the pocket
@param coin value of coin to add
*/
public void add(int coin) {
// autoboxing - the int is automatically packed up in an Integer
coins.add(coin);
}
/**
remove a coin from the pocket
@param coin value of coin to remove
*/
public void remove(int coin) {
// why won't this alone work?
// coins.remove(new Integer(coin));
for (int i=0; i<coins.size(); i++) {
// no cast needed since Java knows the Vector contains
// Integers, plus Java will autounbox it to an int
int value = coins.get(i);
if (value == coin) {
// we found the right kind of coin
coins.remove(i);
// don't keep looking!
return;
}
}
// if we get here, it's a problem -- we didn't have the coin we wanted
System.out.println("Had no coin of value " + coin);
}
/**
determine the number of coins in the pocket
@return the number of coins in the pocket
*/
public int numCoins() {
return coins.size();
}
/**
determing the total value of coins in the pocket
@return sum of the values of all coins in the pocket
*/
public int value() {
int total = 0;
for (int i=0; i<coins.size(); i++) {
// again, autounboxing
total += coins.get(i);
}
return total;
}
/**
try out our pocket change class
@param args command-line arguments
*/
public static void main(String[] args) {
// construct the pocket
PocketChange pocket = new PocketChange();
// make some transactions
pocket.add(1);
pocket.add(10);
pocket.add(5);
pocket.add(5);
pocket.add(25);
pocket.add(1);
pocket.add(10);
pocket.add(10);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
pocket.remove(25);
pocket.remove(10);
pocket.remove(10);
pocket.add(1);
pocket.add(1);
System.out.println("Pocket with " + pocket.numCoins() +
" coins, value " + pocket.value());
}
}