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

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

Аватара для lxa85

Необычный


Contributor


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

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


nomad____1, ну ... блин, ну куда, ну с какого перепуга?
Ну не пхай ты в класс чего не попадя. Чаа.
Я пишу ситуацию, скорректирую задачу.
Затем, уж прости, порежу код.
----
Ситуация. Я кодер, сижу прожу. Случилось, что мне до зарезу понадобился треугольник.
Я пишу ландшафтный дизайн, создаю обучалку, игру, занимаюсь графикой и строю программную модель объекта на пару тысяч полигонов.
Цель.
Зачем?
Мне нужен класс треугольника, который отдает мне площадь, и чтобы не сильно врал в ответах.

Поехали.
Что за глупость
public void inputSides()
Код: Выделить весь код
    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);
    }

одна мысль
Все текстовые вопросы - вне класса. Табу! Класс, если он не "болтливый", должен быть как безвольная скотинка. "Муу" - строго по команде.
Одна процедура вопросы задает, потом стороны запоминает, потом еще и другую вызывает. (Создает еще один экземпляр кода возврата, копию данных в ОЗУ, передачу управления, всё по полной программе вызова процедур)
Что будет, если я захочу изменить треугольник? Мне надо вспоминать предыдущие стороны? Брр
Класс должен обрабатывать те данные, которые я ему скажу. Не спрашивать меня, не строить умного, а молча кушать данные. Молча. Кушать.
(почитал дальше)
Э. Весь этот код - в основную процедуру. Ctrl-C, Ctrl-V и его никто не видел.

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

Сортировка данных

Код: Выделить весь код
    private void sortSides() {
        float[] arraySides = {aSide, bSide, cSide};
        Arrays.sort(arraySides);
        aSide = arraySides[0];
        bSide = arraySides[1];
        cSide = arraySides[2];
    }

А вот это а-яй-яй. Это геометрическое нарушение. За это по рукам. В общем случае треугольник ABC =! CBA. Нельзя треугольник читать как попало, даже если очень хочется.

Прямоугольный треугольник
Код: Выделить весь код
    private boolean rightTriangle() {
        rightTriangle = false;
        if (aSide * aSide + bSide * bSide == cSide * cSide) {
            rightTriangle = true;
        }
        return rightTriangle;
    }

А зачем нам надо возвращать rightTriangle? Не устанавливать, а возвращать?
Или в Java куда не ткни, попадешь в процедуру с функцией?
Код: Выделить весь код
public class Triangle {
    private float aSide;
    private float bSide;
    private float cSide;
    private boolean setSides;
    private boolean planarity;
    private boolean rightTriangle;
    private float square;
private float aSide; - это тоже процедура, возвращающая float ??! (ликбез для меня проведите пожалуйста)

Возвращаемые значения площади
Код: Выделить весь код
    public float getRightTriangleSquare() {
        return rightTriangleSquare();
    }
    private float rightTriangleSquare() {
        square = aSide * bSide / 2;
        return square;
    }
Зачем мы вводили флаг прямоугольности, если я могу его проигнорировать?
Код: Выделить весь код
        Triangle triangle = new Triangle();
        triangle.inputSides();

        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());
Код: Выделить весь код
run:
Введите первую сторону
7
Введите вторую сторону
6
Введите первую сторону
5
5.0
6.0
7.0
0.0
15.0
14.6969385
Площадь треугольника равна 14.6969385 кв.ед.
Почему возвращаемая площадь появляется только после явного указания метода вычисления? Разве у нее не должно быть "дефолтного"/правильного значения, вычисленного максимально правдоподобно?

Пока все, надо и другими делами заняться. Вспомню чего - напишу.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:09, 07-05-2015 | #24