1

Что не так?

Double first_side = (Double) parameters.get(0);
Double second_side = (Double) parameters.get(1);
Double third_side = (Double) parameters.get(2);

assertTrue((first_side = Math.sqrt(second_side * second_side + third_side * third_side)) ||
           (second_side = Math.sqrt(first_side * first_side + third_side * third_side)) ||
           (third_side = Math.sqrt(first_side * first_side + second_side * second_side))
);
Nati
  • 11

2 Answers2

6

Для сравнения значений надо использовать ==, а не =. Код будет таким:

assertTrue((first_side == Math.sqrt(second_side * second_side + third_side * third_side)) ||
           (second_side == Math.sqrt(first_side * first_side + third_side * third_side)) ||
           (third_side == Math.sqrt(first_side * first_side + second_side * second_side))
);

Однако, не смотря на то, что код будет компилироваться, результат работы может отличаться от ожидаемого. Из за плавающей запятой сравнение двух одинаковых чисел double на равенство может возвращать false. Подробнее в вопросе Вычисления на числах с плавающей точкой не работают

Viktorov
  • 7,195
  • 10
  • 37
  • 66
1

Ваша проблема в том, что нельзя логическую операцию выполнить над числами, логические операции выполняются на boolean(false,true). Функция assertTrue принимает boolean переменную, вы же пытаетесь туда засунуть double.