if (newBalance.compareTo(BigDecimal.ZERO) < 0) что тут происходит? после каждой интерации происходит сравнение с начальным балансом?
Kostya Kozhevnikov
28 уровень
подскажите по строчке
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Evgeny Strokov Enterprise Java Developer в СберТех
4 января 2021, 11:28
Если значение newBalance будет больше 0, то результат "newBalance.compareTo(BigDecimal.Zero)" будет положительным. Следовательно, исключение не сгенерируется. Если же значение newBalance будет меньше 0, то результат "<выражение>" будет отрицательным, поэтому исключение будет выброшено.
Советую прочитать про метод compareTo.
0
Crazy cat Full Stack Developer
26 декабря 2019, 01:14
В описание метода:
Following is the declaration for java.math.BigDecimal.compareTo() method.
public int compareTo(BigDecimal val)
Parameters
val − Value to which this BigDecimal is to be compared.
Return Value
This method returns -1 if the BigDecimal is less than val, 1 if the BigDecimal is greater than val and 0 if the BigDecimal is equal to val
т.е. это типа if (newBalance < 0 ) {...}, но т.к. тип BigDecimal не примитивный, поэтому надо вот так изварачиваться: newBalance.compareTo(BigDecimal.ZERO), как видно из описания метода compareTo, в качестве аргумента мы можем передавать любое число типа BigDecimal , например compareTo(new BigDecimal("0")). Также есть BigDecimal.ONE и BigDecimal.TEN для удобства..
Как результат функция вернет либо -1 либо 0 либо 1 (выше это написано)...
0
Кирилл
12 ноября 2019, 06:52
как понимаю: проверяется, не является ли баланс отрицательным
0
Magos Reductor ExceptionExpert
11 ноября 2019, 18:08
на сколько я вижу он бросает исключение если if (newBalance.compareTo(BigDecimal.ZERO) это вернет -1.
0