Подскажите, пож., почему не удается сравнить содержание переменной String с null?
public static void main(String[] args) {
String binaryNumber = "11";
System.out.println(toDecimal(binaryNumber));
}
public static int toDecimal(String binaryNumber) {
if (binaryNumber.equals(null)) { // на этой строке IDE ругается: Condition 'binaryNumber.equals(null)' is always 'false' when reached
return 0;
}
Wise Rabbit
12 уровень
Сравнение String с null??
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
11 декабря 2022, 19:43
Потому что если binaryNumber будет null и вы попытаетесь вызвать equals() получите ошибку NPE
На нулл можете сравнить через ==
0
Wise Rabbit
11 декабря 2022, 19:52
так тоже пробовал, а все равно ругается:
public static int toDecimal(String binaryNumber) {
String Q = (String) null;
if ((binaryNumber.equals("")) || (binaryNumber==Q)) // Condition 'binaryNumber==Q' is
always 'false' when reached
{
return 0;
0
KIRAРазработчик в prosv.ruExpert
12 декабря 2022, 07:11
Потому что вы сперва вызываете binaryNumber.equals("")) - на этом этапе будет ошибка если binaryNumber нулл, дальше проверять уже нет смысла.
Сперва нужно проверять на нулл и не нужно String Q = (String) null;
if (binaryNumber == null || binaryNumber.isEmpty()){
return 0;
}
0
Wise Rabbit
12 декабря 2022, 09:51
Спасибо, KIRA!)) Да, код заработал. Правда метода isEmpty()) вроде ранее в лекциях не было. Я старался обходиться ранее изученными. Но несмотря на то, что код работает, включая проверку условий, валидатор не принимает. Я повесил вопрос в разделе помощь. Самому не удалось найти ошибку.
Еще если есть возможность подскажите, пож. Я посмотрел вариант правильного решения, и не понял как работает фрагмент кода:
Как переменной String binaryNumber прибавляется число int?
public static String toBinary(int decimalNumber) {
String binaryNumber = "";
if (decimalNumber <= 0) {
return binaryNumber;
}
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber; // ВОТ ТУТ !! ??
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
0
KIRAРазработчик в prosv.ruExpert
12 декабря 2022, 12:46
А что вас смущает, к числу добавляют строку и получают строку
К примеру
5 + "а" будет строка 5а
В вашем примере находят остаток числа от деления на 2 и к нему прибавляют строку
К примеру посчитаем для числа 10
изначально строка пустая binaryNumber = "";
binaryNumber = (10 % 2) + ""; 10% 2 = 0 + "";
Теперь binaryNumber = "0"
decimalNumber = decimalNumber / 2; 10 / 2 = 5;
Повторяем
binaryNumber = (5 % 2) + "0"; 5% 2 = 1 + "0";
Теперь binaryNumber = "10"
decimalNumber = decimalNumber / 2; 5 / 2 = 2;
Повторяем
binaryNumber = (2 % 2) + "10"; 2 % 2 = 0 + "10";
Теперь binaryNumber = "010"
decimalNumber = decimalNumber / 2; 2 / 2 = 1;
Повторяем
binaryNumber = (1 % 2) + "010"; 1 % 2 = 1 + "010";
Теперь binaryNumber = "1010"
decimalNumber = decimalNumber / 2; 1 / 2 = 0;
Закончили
0
Wise Rabbit
12 декабря 2022, 13:57
спасибо!)) Похоже я как-то не заметил или забыл этот материал в прошедших лекциях
0