если еще, если не выводить еще, если заявление Java - PullRequest
0 голосов
/ 09 марта 2019

У меня проблема с остальным, если часть кода. Первое «if» работает нормально, третье (else) работает нормально, но у меня есть проблема с частью кода «else if», когда программа не выполняет этот оператор.

if ((a+c)>=(b+d)) {
    if ((a==b) && (b==c) && (c==d)) {
        System.out.println("square");
    } else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d)  ) {
        System.out.println("rectangle");
    } else {
        System.out.println("four different sides");
    }
} else
    System.out.println("ERROR");

Итак, когда я ввожу значения a = c и b = d, я получаю «ОШИБКА» вместо «прямоугольник».

Что я сделал не так?

Спасибо!

Ответы [ 5 ]

0 голосов
/ 09 марта 2019

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

 if(a>0 && b>0 && c>0 && d>0)
  {
    if ((a==c) ||(b==d))
    {
        if ((a==b) && (b==c) && (c==d))
        {
            System.out.println("square");
        }
        else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d))
        {
            System.out.println("rectangle");
        }
        else{
            System.out.println("Two side are same but not square or rectangle");
        }
    }  
    else 
       System.out.println("four different sides");

 } else 
    System.out.println("Error");
0 голосов
/ 09 марта 2019

Ваше первое условие, если ((a + c)> = (b + d)) не является правильным для условия прямоугольника, потому что для прямоугольника обе противоположные стороны равны. Если вы суммируете (a + c), это выглядит как две маленькие сторонызначение никогда не бывает равным двум значениям большой стороны (b + d). Аналогично, если вы измените a, c как большую сторону и b, d как маленькую сторону условия прямоугольника, будет то же, что и раньше. Так что вы можете изменить, как показано ниже

Пример ввода для квадрата int a = 2, b = 2, c = 2, d = 2;

Пример ввода для прямоугольника int a = 2, b = 4, c = 2, d = 4;

Пример ввода a = 10, b = 4, c = 6, d = 9

if ((a==c)||(b==d))
        {
            if ((a==b) && (b==c) && (c==d))
            {
                System.out.println("square");
            }
            else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d))
            {
                System.out.println("rectangle");
            }
            else 
            {           
                System.out.println("Two sides are similar but not square or rectangle");
            }

        } else
        System.out.println("Foure side are different");
0 голосов
/ 09 марта 2019

Если вы вводите значения a = c и b = d, вам также следует проверить, что значения a или c больше, чем b и d. В вашем случае значения a и c меньше, чем b и d, поэтому сначала, если оператор не удовлетворяет условию.

Вы можете попробовать это для понимания.

public static void main(String[] args) {
        int a = 4,b =2 ,c =4 ,d =2;
        if ((a+c)>=(b+d))
        {
            if ((a==b) && (b==c) && (c==d))
            {

                System.out.println("square");

            }
            else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d)  )
            {
                System.out.println("rectangle");
            }

            else
            {

                System.out.println("four different sides");
            }

        }
        else{
            System.out.println("ERROR");
        }
    }
0 голосов
/ 09 марта 2019

Просто измените свой код так:

if ((a + c) >= (b + d)) {
        if ((a == b) && (b == c) && (c == d)) {
            System.out.println("square");
        } else if ((a != b) && (c != d) && (a == c) && (b == d)) {
            System.out.println("rectangle");
        } else {
            System.out.println("four different sides");
        }
    } else if ((a != b) && (c != d) && (a == c) && (b == d)) {
        System.out.println("rectangle");
    } else if (a != b && b != c && c != d && a != c) {
        System.out.println("four different sides");
    } else
        System.out.println("ERROR");

Работа выполнена :)

0 голосов
/ 09 марта 2019

У вас есть это условие вверху: 'if ((a + c)> = (b + d))'. Возможно, вы вводите a = c и b = d, но это может не соответствовать этому условию '((a + c)> = (b + d)', которое является самым первым. Из-за чего оно пойдет в другую часть первого заявления if. Для более подробной информации поделитесь вашими значениями, которые вы вводите, может быть, я могу уточнить это немного подробнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...