| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import java.util.HashSet;
- import java.util.Set;
-
- public class Triangle {
-
- private double side1;
- private double side2;
- private double side3;
-
- public Triangle(double side1, double side2, double side3) throws TriangleException {
- this.side1 = side1;
- this.side2 = side2;
- this.side3 = side3;
-
- if (allSidesAreZero() || hasImpossibleSides() || violatesTriangleInequality()) {
- throw new TriangleException();
- }
- }
-
- public TriangleKind getKind() {
- int uniqueSides = getNumberOfUniqueSides();
-
- if (uniqueSides == 1) {
- return TriangleKind.EQUILATERAL;
- }
-
- if (uniqueSides == 2) {
- return TriangleKind.ISOSCELES;
- }
-
- return TriangleKind.SCALENE;
- }
-
- private boolean allSidesAreZero() {
- return side1 == 0 && side2 == 0 && side3 == 0;
- }
-
- private boolean hasImpossibleSides() {
- return side1 < 0 || side2 < 0 || side3 < 0;
- }
-
- private boolean violatesTriangleInequality() {
- return side1 + side2 <= side3 || side1 + side3 <= side2 || side2 + side3 <= side1;
- }
-
-
- public int getNumberOfUniqueSides() {
- Set<Double> sides = new HashSet<>();
-
- sides.add(side1);
- sides.add(side2);
- sides.add(side3);
-
- return sides.size();
- }
- }
|