если еще, если не вывод инструкции else if java

#java #eclipse #if-statement

#java #eclipse #if-statement

Вопрос:

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

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

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

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

Спасибо!

Комментарии:

1. Вы пробовали отлаживать код?

2. Какие точные значения вы вводите? Просто сказать «a = c и b = d» недостаточно информации.

3. Я нахожу, где я допустил ошибку, я поставил неправильное условие в начале кода.

Ответ №1:

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

  if(a>0 amp;amp; b>0 amp;amp; c>0 amp;amp; d>0)
  {
    if ((a==c) ||(b==d))
    {
        if ((a==b) amp;amp; (b==c) amp;amp; (c==d))
        {
            System.out.println("square");
        }
        else if ( (a!=b) amp;amp; (c!=d)  amp;amp; ( a== c) amp;amp; (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");
  

Ответ №2:

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

Комментарии:

1. Да, вы правы! Я поставил неправильное условие в начале. Когда я ввожу a = 4, b = 5, c = 4, d = 5, это не работает, но со значениями a = 5, b = 4, c = 5, d = 4 это работает. Спасибо!

Ответ №3:

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

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

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

                System.out.println("square");

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

            else
            {

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

        }
        else{
            System.out.println("ERROR");
        }
    }
  

Ответ №4:

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

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

Работа выполнена 🙂

Комментарии:

1. Спасибо! Все эти скобки меня смутили.

2. отредактированный ответ @zokistone, пожалуйста, проверьте сейчас. это будет работать нормально

3. Пожалуйста, подтвердите это как принятый ответ. или дайте положительный результат 🙂

4. Проблема в первом условии, я поставил неправильное условие. Похоже, у меня с математикой плохо.

Ответ №5:

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

Пример ввода для square 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) amp;amp; (b==c) amp;amp; (c==d))
            {
                System.out.println("square");
            }
            else if ( (a!=b) amp;amp; (c!=d)  amp;amp; ( a== c) amp;amp; (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");
  

Комментарии:

1. Когда четыре входных параметра отличаются, некоторое время уходит на логику ошибок. Вам нужно это проверить, что … попробуйте этот пример ввода int a = 10, b = 4, c = 6, d = 9;