/************************************************************************* * Compilation: javac PhoneNumber.java * Execution: java PhoneNumber * * Implementation of a US phone number. * *************************************************************************/ import java.text.DecimalFormat; public class PhoneNumber { private String area; // 3 digit area code private String exch; // 3 digit exchange private String ext; // 4 digit extension public PhoneNumber(String area, String exch, String ext) { this.area = area; this.exch = exch; this.ext = ext; } // return string representation of phone number public String toString() { return "(" + area + ") " + exch + "-" + ext; } public boolean equals(Object x) { PhoneNumber a = this; PhoneNumber b = (PhoneNumber) x; return (a.area.equals(b.area)) && (a.exch.equals(b.exch)) && (a.ext.equals(b.ext)); } // return same hash code as concatenating three strings together public int hashCode() { return 29791* (ext.hashCode() + 29791 * exch.hashCode()) + area.hashCode(); } // test client public static void main(String[] args) { PhoneNumber a = new PhoneNumber("609", "867", "5309"); PhoneNumber b = new PhoneNumber("609", "867", "5309"); PhoneNumber c = new PhoneNumber("800", "867", "0000"); System.out.println("a " + a); System.out.println("b " + b); System.out.println("c " + c); System.out.println("a == b " + (a == b)); System.out.println("a.equals(b) " + (a.equals(b))); System.out.println("b.equals(a) " + (b.equals(a))); System.out.println("a.equals(c) " + (a.equals(c))); System.out.println("a.hashCode() " + (a.hashCode())); System.out.println("b.hashCode() " + (b.hashCode())); System.out.println("c.hashCode() " + (c.hashCode())); } }