Этот код Java ниже не возвращает true в выражении if else...
public class DecimalComparator {
public static void main(String[] args) {
System.out.println(areEqualByThreeDecimalPlaces(25.367876,25.367873));
}
public static boolean areEqualByThreeDecimalPlaces(double a, double b){
DecimalFormat threePreshizen = new DecimalFormat("###.###");
String aNew = threePreshizen.format(a);
String bNew = threePreshizen.format(b);
System.out.println(aNew);
System.out.println(bNew);
if (aNew == bNew){
return true;
}else {
return false;
}
}
}
Я ожидаю, что он вернет "true".
Вы сравниваете два разных объекта. Используйте метод .equals().




Замените блок if следующим:
return aNew.equals(bNew);
Это возвращает логическое значение, основанное на совпадении содержимого двух строк, а не на том, идентично ли значение их ссылки на память.
Если вы ожидаете, что любая из ваших строк будет null, вместо этого используйте
return Objects.equals(aNew, bNew);
Спасибо Остин Шефер. я решил это
Пожалуйста, примите ответ, чтобы любой, кто столкнется с этим вопросом в будущем, мог сослаться на него.
Сравните строки с .equals(). Кроме того, просто
return aNew.equals(bNew)и удалите if/else