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

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

Аватара для nomad____1

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


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

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


Код переделал и представляю вашему вниманию. Прочитал о return-ах. На комментарии не скупился. О потоках ввода/вывода еще что то нашел, а вот об ошибках толком ничего. Если можете то скиньте ссылку/литературу
Main класс

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

public class MathProgram {

    public static void main(String[] arg) {
        Triangle triangle = new Triangle();
        triangle.inputSides();
        if (triangle.isSetSides() == true) {
            if (triangle.isPlanarity() == true) {
                if (triangle.isRightTriangle() == true) {
                    triangle.getRightTriangleSquare();
                } else {
                    triangle.getGeronSquare();
                }
            } else {
                System.out.println("Данная фигура не может быть треугольником");
            }
            if (triangle.isPlanarity() == true) {
                System.out.println("Площадь треугольника равна " + triangle.getSquare() + " кв.ед.");
            }
        } else {
            System.out.println("Введенные данные не могут быть сторонами какой либо геометрической фигуры");
        }
    }
}

класс с методами

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

import java.util.Arrays;
import java.util.Scanner;

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="описание метода">
    /**
     * метод для ввода данных в консоль с клавиатуры
     */
//</editor-fold>
    public void 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();
        setSides(sideA, sideB, sideC);
    }

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * сортировка массива и переназначение сторон для удобства. стороны А и В -
     * самые меньшие (катеты если треугольник прямоугольный), сторона С - самая
     * большая (гипотенуза если треугольник прямоугольный)
     */
//</editor-fold>
    private void sortSides() {
        float[] arraySides = {aSide, bSide, cSide};
        Arrays.sort(arraySides);
        aSide = arraySides[0];
        bSide = arraySides[1];
        cSide = arraySides[2];
    }

//<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;
            planarity();
            sortSides();
        }
        return isSetSides();
    }

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

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

//<editor-fold defaultstate="collapsed" desc="описание метода">
    /**
     * метод вычисляющий площадь по теореме Герона
     *
     * @return
     */
//</editor-fold>
    private float geronSquare() {
        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() {
        square = aSide * bSide / 2;
        return square;
    }

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


Старался как мог. Реализовал интерфейс через который можно получить данные, но не изменить их. Так сказать обеспечил безопасность. Притом девушка подкинула идею. Усложнить можно если треугольник задается в 2Д плоскости координатами вершин и потом в 3д плоскости. Соответственно написать конструкторы и написать пару методов для нахождения длинны отрезков заданных координатами их концов а далее по написанному моему трафарету. Еще пару дней и это все упакую в красивую оболочку с кнопочками и полями. Но только если все написано правильно и нормально. Хочется довести все до ума. Заодно и набить руку.

Последний раз редактировалось nomad____1, 06-05-2015 в 20:25.


Отправлено: 19:51, 06-05-2015 | #23