public class Triangle implements Polygon { private final double s1; private final double s2; private final double s3; public Triangle(double s1, double s2, double s3) { if(radicand(s1, s2, s3) < 0) { throw new IllegalArgumentException(); } this.s1 = s1; this.s2 = s2; this.s3 = s3; } //poopsmith private static double radicand(double a, double b, double c) { double s = (a + b + c)/2; return s*(s - a)*(s - b)*(s - c); } public double diameter() { return Math.max(s1, Math.max(s2, s3)); } public double perimeter() { return s1 + s2 + s3; } //herron's formula // s = (s1 + s2 + s3) // area = sqrt(s*(s-s1)*(s-s2)*(s-s3)) public double area() { return Math.sqrt(radicand(s1,s2,s3)); } public int numSides() { return 3; } }