Почему когда идет сравнение:
if (binarryNumber.equals("") || binaryNumber == null) {
return decimalNumber;
}
Выводит ошибка и говорит что будет всегда выдавать true при любом раскладе
А если раздельно написать так, то код работает, компилятор не ругается
if (binaryNumber == null) return decimalNumber;
if (binaryNumber.equals("")) return decimalNumber;
Помогите найти причину, хочу узнать в чем разница
Dark Prince
21 уровень
Валидатор ругается
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Dark Prince
8 июля 2021, 17:56
А почесу должна быть ошибка? А по отдельность без оператора || или | все работает.
0
НикитаExpert
8 июля 2021, 18:00
if (binarryNumber.equals("") || binaryNumber == null)
потому что сначала идет проверка первого условия и только потом второго. А так как первое условие сразу же выдаст ошибку, то и программа падает. так что если первое условие выдаст true то второе уже проверяться уже не будет
+1
Ksenia Volkova Java Developer в DXC Master
8 июля 2021, 18:55
У тебя и по отдельности, если поменять местами
в случае null будет ошибка. +1
Dark Prince
9 июля 2021, 04:29
А как по вашему будет правильно реализовать ЕСЛИ входящий параметр будет равен пустой строке ИЛИ null, то ВЕРНУТЬ 0 ?
0
Dark Prince
9 июля 2021, 04:31
Я так понял при null сравнить пустую строку не получится, так как входящий параметр не имеет ссылку на объект, и по этому выводит исключение? А как правильнее реализовать проверку входящего параметра?
0
НикитаExpert
9 июля 2021, 05:17
сначала проверять на null
0
Ksenia Volkova Java Developer в DXC Master
8 июля 2021, 16:43
Если у тебя binarryNumber будет равен null, то в этом случае
твой код упадет с ошибкой на первой же части условия, а до второй дело просто не дойдет. +2