// File: DynamicExample18.java // // Author: Rahul Simha // Created: Sept 2, 1998. // Modified: Sept, 2008 class Customer { String custName; int bankBalance; void setupData (String cname, int balance) { custName = cname; bankBalance = balance; } public Customer (String cname, int balance) { setupData (cname, balance); } public Customer () { setupData ("XXXinvalidcustXXX", 0); } public Customer (String cname) { setupData (cname, 0); } public void printInterest (double percentageRate) { double interest = (percentageRate / 100) * bankBalance; System.out.println ("Customer " + custName + " gets " + interest + " dollars in interest"); } public String toString () { return ("Name=" + custName + ", Balance=" + bankBalance); } // Accessors public String getCustName () { return custName; } public int getBalance () { return bankBalance; } int compare (Customer c) { double ratio = (double) bankBalance / (double) c.bankBalance; // Comparable if within same order of magnitude. if ( (0.1 < ratio) && (ratio < 10) ) return 0; else if (bankBalance < c.bankBalance) return -1; else return 1; } } public class DynamicExample18 { public static void main (String[] argv) { Customer c1 = new Customer ("Bill G", 1000000); Customer c2 = new Customer ("Larry E", 100000); // Notice the difference: int comp = c1.compare (c2); if (comp < 0) System.out.println ("c2 is richer"); else if (comp > 0) System.out.println ("c1 is richer"); else System.out.println ("same balance"); } }