import java.util.*; /** * Triangle problem - in OO style * @author Paul Ammann */ public final class Triangle { int x; int y; int z; // Client triangle sides Integer small; Integer medium; Integer large; // Ordered triangle sides public Triangle (int x, int y, int z) { this.x = x; this.y = y; this.z = z; orderSides(); } private void orderSides() { List list = new ArrayList(); list.add(x); list.add(y); list.add(z); Collections.sort(list); small = list.get(0); medium = list.get(1); large = list.get(2); } public boolean isValid() { return (small > 0) && (small + medium > large); } public boolean isScalene() { if (!isValid()) return false; if (small.equals(medium) || medium.equals(large)) return false; return true; } public boolean isIsosceles() { if (!isValid()) return false; if (small.equals(medium)) return (!small.equals(large)); if (medium.equals(large)) return (!small.equals(large)); return false; } public boolean isEquilateral() { if (!isValid()) return false; if (small.equals(medium) && medium.equals(large)) return true; return false; } @Override public String toString() { return "Triangle: " + x + ", " + y + ", " + z; } @Override public boolean equals(Object obj) { if (!(obj instanceof Triangle)) return false; Triangle t = (Triangle) obj; return (small. equals(t.small ) && medium.equals(t.medium) && large. equals(t.large )); } @Override public int hashCode() { return small.hashCode() + medium.hashCode() + large.hashCode(); } }