Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для nomad____1

Пользователь


Сообщения: 79
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вот с утра не было дел. Шел дождь. Делать было нечего. Порция очередного "гавнокода"
мейн

Дописано Ваш тест.
Код: Выделить весь код
package mathprogram;

import java.util.Scanner;

public class MathProgram {

    public static void main(String[] arg) {
        Triangle triangle = new Triangle();
//        triangle.inputSides();

        Scanner input = new Scanner(System.in);
        System.out.println("Введите первую сторону");
        float sideA = input.nextFloat();
        System.out.println("Введите вторую сторону");
        float sideB = input.nextFloat();
        System.out.println("Введите третью сторону");
        float sideC = input.nextFloat();
        triangle.setSides(sideA, sideB, sideC);

        System.out.println(triangle.getaSide());
        System.out.println(triangle.getbSide());
        System.out.println(triangle.getcSide());

        System.out.println(triangle.getSquare());
        System.out.println(triangle.getRightTriangleSquare());
        System.out.println(triangle.getGeronSquare());
        if (triangle.getSquare() <= 0) {
            System.out.println("введены некорректные данные");
        }
    }
}


методарий

Код: Выделить весь код
package mathprogram;

import java.util.Arrays;

public class Triangle {

    private float aSide;
    private float bSide;
    private float cSide;
    private boolean setSides;
    private boolean planarity;
    private boolean rightTriangle;
    private float square;

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод проверяющий введенные значения
     *
     * @param sideA
     * @param sideB
     * @param sideC
     * @return
     */
//</editor-fold>
    public boolean setSides(float sideA, float sideB, float sideC) {
        setSides = false;
        if (sideA > 0 && sideB > 0 && sideC > 0) {
            aSide = sideA;
            bSide = sideB;
            cSide = sideC;
            setSides = true;
//            sortSides();
            planarity();
        }
        return setSides;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод проверяющий треугольник на планарность
     *
     * @return
     */
//</editor-fold>
    private boolean planarity() {
        planarity = false;
        if (aSide + bSide > cSide && bSide + cSide > aSide && aSide + cSide > bSide) {
            planarity = true;
            rightTriangle();
        }
        return planarity;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод проверяющий треугольник на прямоугольность
     *
     * @return
     */
//</editor-fold>
    private boolean rightTriangle() {
        rightTriangle = false;
        if (aSide * aSide + bSide * bSide == cSide * cSide || aSide * aSide + cSide * cSide == bSide * bSide || bSide * bSide + cSide * cSide == aSide * aSide) {
            rightTriangle = true;
        }
        square();
        return rightTriangle;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод вычисляющий площадь по теореме Герона
     *
     * @return
     */
//</editor-fold>
    private float geronSquare() {
        if (planarity == true) {
            float perimeter = (aSide + bSide + cSide) / 2;
            square = (float) Math.sqrt(perimeter * ((perimeter - aSide) * (perimeter - bSide) * (perimeter - cSide)));
        }
        return square;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод вычисляющий площадь по стандартной формулой для прямоугольного
     * треугольника
     *
     * @return
     */
//</editor-fold>
    private float rightTriangleSquare() {
        if (planarity == true && rightTriangle == true) {
            square = aSide * bSide / 2;
        }
        return square;
    }

    private float square() {
        if (planarity == true) {
            if (isRightTriangle() == true) {
                rightTriangleSquare();
            } else {
                geronSquare();
            }
        }
        return 0;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * площадь вычисленная по теореме Герона
     *
     * @return
     */
//</editor-fold>
    public float getGeronSquare() {
        return geronSquare();
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * площадь вычисленная стандартной формулой для прямоугольного треугольника
     *
     * @return
     */
//</editor-fold>
    public float getRightTriangleSquare() {
        return rightTriangleSquare();
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the setSides информация о том корректно ли были введены длины
     * сторон
     */
//</editor-fold>
    public boolean isSetSides() {
        return setSides;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the planarity информация о планарности фигуры (можно ли ее
     * отнести к треугольникам с точки зрения классической планиметрии)
     */
//</editor-fold>
    public boolean isPlanarity() {
        return planarity;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the rightTriangle информация является ли данный треугольник
     * прямоугольным
     */
//</editor-fold>
    public boolean isRightTriangle() {
        return rightTriangle;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the square с помощью данной функции можно получить площадь
     * треугольника
     */
//</editor-fold>
    public float getSquare() {
        square();
        return square;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the aSide с помощью данной функции можно получить значение стороны.
     * одна с самых маленьких сторон треугольника (предположительно один из
     * катетов если треугольник прямоугольный)
     */
//</editor-fold>
    public float getaSide() {
        return aSide;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the bSide с помощью данной функции можно получить значение стороны.
     * одна с самых маленьких сторон треугольника (предположительно один из
     * катетов если треугольник прямоугольный)
     */
//</editor-fold>
    public float getbSide() {
        return bSide;
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * @return the cSide с помощью данной функции можно получить значение стороны.
     * самая большая сторона треугольника (предположительно гипотенуза если
     * треугольник прямоугольный)
     */
//</editor-fold>
    public float getcSide() {
        return cSide;
    }
}


Теперь класс "сам" определяет лучший способ вычисления площади. В меру болтлив. Зря не "тявкает" в консоль.

Сортировка массива была сделана для того что бы не писать такую колбасу так как мне показалось это не совсем эстетичным.
Код: Выделить весь код
 rightTriangle = false;
        if (aSide * aSide + bSide * bSide == cSide * cSide || aSide * aSide + cSide * cSide == bSide * bSide || bSide * bSide + cSide * cSide == aSide * aSide) {
            rightTriangle = true;
Переделал признаю что на меня вне сошла лень. Больше так не буду.

Флаги сделал доступными для чтения для того что бы можно было получить инфу например о планарности треугольника только. Или прямоугольность. Не всегда же программа должна только площадь считать. Так сказать наращиваю функционал.

-------
________________________________________________________
Ты - то что ты ешь. Ешь людей - будь человеком


Последний раз редактировалось nomad____1, 07-05-2015 в 14:21.


Отправлено: 14:07, 07-05-2015 | #27