1
0

Добрый день. Пытаюсь выполнить это задание в Intellij IDEA. Разбил задачу на две подзадачи и выделил их в отдельные методы. Метод enterNumbers() - ввод пользователем трех сторон треугольника с клавиатуры. Метод isTriangleExist(int a, int b, int c) - возвращает true - если треугольник существует и false - если не существует. Программа компилируется, запускается, условия выполняются, но тестирование JavaRush не проходит. Пробовал менять условие несуществования треугольника на

(a + b < c || a + c < b || b + c < a || a == 0 || b == 0 || c == 0)

, но тестирование все равно не проходит. Подскажите, что нужно исправить в моем исходном коде:

 package com.javarush.test.level04.lesson04.task08;

    /* Треугольник
    Ввести с клавиатуры три числа а, b, c – стороны предполагаемого треугольника.
    Определить возможность существования треугольника по сторонам. Результат вывести на экран в следующем виде:
    "Треугольник существует." - если треугольник с такими сторонами существует.
    "Треугольник не существует." - если треугольник с такими сторонами не существует.
    Подсказка: Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.
    Требуется сравнить каждую сторону с суммой двух других.
    Если хотя бы в одном случае сторона окажется больше суммы двух других, то треугольника с такими сторонами не существует.
    */

    import java.io.*;

    public class Solution
    {
        int a;
        int b;
        int c;

        public static void main(String[] args) throws Exception
        {
            Solution triangle = new Solution();
            triangle.enterNumbers();
            if(triangle.isTriangleExist(triangle.a, triangle.b, triangle.c))
                System.out.println("Треугольник существует.");
            else
                System.out.println("Треугольник не существует.");
        }

        public void enterNumbers() throws IOException
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter a:");
            this.a = Integer.parseInt(reader.readLine());
            System.out.println("Enter b:");
            this.b = Integer.parseInt(reader.readLine());
            System.out.println("Enter c:");
            this.c = Integer.parseInt(reader.readLine());
        }

        public boolean isTriangleExist(int a, int b, int c) {
            if(a + b < c || a + c < b || b + c < a)
                return false;
            else
                return true;
        }
    }

задан 03 Фев '17, 06:33

Smirnov93's gravatar image

Smirnov93
132
одобрено: 33%


А попробуйте треугольник 3 3 6?

ссылка

опубликован 03 Фев '17, 12:43

vampirit's gravatar image

vampirit
9.8k19
одобрено: 34%

А теперь возьмите линейку и попробуйте нарисовать этот треугольник =)

(03 Фев '17, 12:55) vampirit

Существует. Я шел от обратного - "треугольник не существует". А все что не "не существует" - существует. Кроме случая когда одна (или несколько) из сторон равны нулю, но и с этим условием не получается пройти тестирование.

(03 Фев '17, 12:51) Smirnov93

Да, действительно, треугольника 3 3 6 не существует. Все получилось, изменил условие на if(a + b > c && a + c > b && b + c > a)

ссылка

опубликован 03 Фев '17, 13:05

Smirnov93's gravatar image

Smirnov93
132
одобрено: 33%

Если сдали, то вопрос закройте

(03 Фев '17, 13:14) vampirit
System.out.println("Enter a:");

эти строчки уберите, вас о них не просили

ссылка

опубликован 03 Фев '17, 06:35

vampirit's gravatar image

vampirit
9.8k19
одобрено: 34%

изменено 03 Фев '17, 06:38

Не помогает

package com.javarush.test.level04.lesson04.task08;

import java.io.*;

public class Solution
{
    int a;
    int b;
    int c;

    public static void main(String[] args) throws Exception
    {
        Solution triangle = new Solution();
        triangle.enterNumbers(triangle);
        if(triangle.isTriangleExist(triangle.a, triangle.b, triangle.c))
            System.out.println("Треугольник существует.");
        else
            System.out.println("Треугольник не существует.");
    }

    public void enterNumbers(Solution triagle) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        triagle.a = Integer.parseInt(reader.readLine());
        triagle.b = Integer.parseInt(reader.readLine());
        triagle.c = Integer.parseInt(reader.readLine());
    }

    public boolean isTriangleExist(int a, int b, int c) {
        if(a + b < c || a + c < b || b + c < a)
            return false;
        else
            return true;
    }
}
ссылка

опубликован 03 Фев '17, 12:24

Smirnov93's gravatar image

Smirnov93
132
одобрено: 33%

Может подойти к проблеме с простой стороны ? Не так сильно усложнять код? Смотрите, из вашего кода основное действие это сравнение

 if(a + b < c || a + c < b || b + c < a)

Так Вы сразу в then и else выводите println с ответом :) НУ естественно до этого три считывания с клавиатуры произведя.. И все! Не создавайте новых объектов методов. И например переменные сторон сразу внутри main объявляйте -

int a = scanner.nextInt();

или через BufferedReader И да. В условии на равно тоже надо добавить, как заметили выше.

ссылка

опубликован 03 Фев '17, 12:46

Romich's gravatar image

Romich
112
одобрено: 0%

изменено 03 Фев '17, 12:54

Хотел пойти по принципу разбиения мелких задач на методы и поэтому немного усложнил. Вот проще, но все равно не проходит тестирование. Возможно ошибка в условии существования треугольника, буду думать.

package com.javarush.test.level04.lesson04.task08;

    import java.io.*;

    public class Solution
    {

        public static void main(String[] args) throws Exception
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            int a = Integer.parseInt(reader.readLine());
            int b = Integer.parseInt(reader.readLine());
            int c = Integer.parseInt(reader.readLine());
            if(a + b < c || a + c < b || b + c < a || a == 0 || b == 0 || c == 0) {
                System.out.println("Треугольник не существует.");
            }
            else {
                System.out.println("Треугольник существует.");
            }
        }
    }
ссылка

опубликован 03 Фев '17, 12:59

Smirnov93's gravatar image

Smirnov93
132
одобрено: 33%

и вновь введите в ваше программу 3 3 6

(03 Фев '17, 13:00) vampirit
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×542
×440
×269
×31

Задан: 03 Фев '17, 06:33

Просмотров: 621 раз

Отредактирован: 03 Фев '17, 13:14