Sha256: e162117ab51acdf9c5faeb73c2ea9d859a195ad0112eb2847ffe07be23d766b7

Contents?: true

Size: 1.31 KB

Versions: 174

Compression:

Stored size: 1.31 KB

Contents

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();
    }
}

Version data entries

174 entries across 174 versions & 1 rubygems

Version Path
trackler-2.1.0.18 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.17 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.16 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.15 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.14 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.13 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.12 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.11 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.10 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.9 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.8 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.7 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.6 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.5 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.4 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.3 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.2 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.1 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.1.0.0 tracks/java/exercises/triangle/src/example/java/Triangle.java
trackler-2.0.8.55 tracks/java/exercises/triangle/src/example/java/Triangle.java