Неверные типы операндов для бинарного оператора - тройки Пифагора - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь выяснить, почему этот код не работает.Я пытаюсь получить тройки Пифагора, 1-500, где выходные значения различны.

Когда я пытаюсь скомпилировать, я получаю сообщение об ошибке , говорящее

error: неверные типы операндов для бинарного оператора.

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

public class Pythagoras {

    public static void main(String[] args) {
        int side1;
        int side2;
        int hypotenuse;
        for(side1 = 1; side1 <= 500; side1 ++)
            for(side2 = 1; side2 <= 500; side2 ++)
                for(hypotenuse = 1; hypotenuse <= 500; hypotenuse ++)
                    if(side1 < side2 < hypotenuse)
                        if((side1 * side1) + (side2 * side2) == (hypotenuse * hypotenuse))
                            System.out.printf(%d %d %d\n, side1, side2, hypotenuse);

    }

}

1 Ответ

0 голосов
/ 07 октября 2018

Существует несколько проблем, которые необходимо устранить:

  1. Пробелы никогда не должны отделять унарные операторы, такие как приращение ("++") и декремент ("-") отих операнды.
  2. a < b < c - недопустимое утверждение, и вам необходимо использовать (a < b && b < c)

. Вы также можете избавиться от сравнения (side1 < side2 < hypotenuse), просто обновивВаш цикл for, как показано ниже.

Обновленная реализация:

public class Pythagoras {

    public static void main(String[] args) {
        int side1;
        int side2;
        int hypotenuse;
        for(side1 = 1; side1 <= 500; side1++)
            for(side2 = side1+1; side2 <= 500; side2++)
                for(hypotenuse = side2+1; hypotenuse <= 500; hypotenuse++)
                    if((side1 * side1) + (side2 * side2) == (hypotenuse * hypotenuse))
                        System.out.printf("%d %d %d\n", side1, side2, hypotenuse);

    }


}
...