Работа с большими и точными числами

Требуется посчитать площадь по параметрам, забитым в тесте (сделан преподавателем), и, в случае если площадь посчитать невозможно, то вывести -1.0, то есть треугольник построить невозможно. По условию сумма любых двух сторон треугольника не должна быть меньше третьей.

Но в итоге программа мне считает и площадь возможных треугольников, и невозможных. Я не понимаю что делаю не так.

public class GeometryCalculator {
    public static double a;
    public static double b;
    public static double c;
    public static double p;

    // метод должен использовать абсолютное значение radius
    public static double getCircleSquare(double radius) {
        return Math.PI * Math.pow(radius, 2);
    }

    // метод должен использовать абсолютное значение radius
    public static double getSphereVolume(double radius) {
        return Math.abs(4*(Math.PI * Math.pow(radius, 3))/3);
    }

    public static boolean isTrianglePossible(double a, double b, double c) {
        if (a + b < c && a + c < b && b + c < a) {
            return false;
              }
        return false;
    }
    // перед расчетом площади рекомендуется проверить возможен ли такой треугольник
    // методом isTrianglePossible, если невозможен вернуть -1.0
    private static double getTriangleSquare(double a, double b, double c) {
        return Math.sqrt(Math.abs(p()*(p()-a)*(p()-b)*(p()-c)));
    }

    public static void p() {
        p = (a + b + c) / 2;
    }
}

Я уже понадобавлял строк кода, в итоге вообще площадь перестало считать.


Ответы (1 шт):

Автор решения: Pentiux
    public static boolean isTrianglePossible(double a, double b, double c) {
        return a + b >= c && a + c >= b && b + c >= a
    }

    private static double getTriangleSquare(double a, double b, double c) {
       if(isTrianglePossible(a, b, c)) {
           return Math.sqrt(Math.abs(p()*(p()-a)*(p()-b)*(p()-c)));
       }
       return -1.0
   }

думаю, что-то типа такого.

→ Ссылка