Boolean.parseBoolean( "1" ) = false...?
Жаль, что я болею... У меня есть: HashMap<String, String> o
o.get('uses_votes'); // "1"
Но...
Boolean.parseBoolean(o.get('uses_votes')); // "false"
Я предполагаю, что ....parseBoolean
не принимает стандартный 0 = false
1 = true
?
Я делаю что-то не так, или мне придется обернуть мой код:
boolean uses_votes = false;
if(o.get('uses_votes').equals("1")) {
uses_votes = true;
}
Спасибо
Ответы
Ответ 1
Он принимает только строковое значение "true"
для представления boolean true
. Лучшее, что вы можете сделать, это
boolean uses_votes = "1".equals(o.get("uses_votes"));
Или, если Map
фактически представляет "entitiy", я думаю, что Javabean намного лучше. Или, если он представляет настройки конфигурации, вы можете взглянуть на Apache Commons Configuration.
Ответ 2
У меня есть небольшая функция полезности для преобразования всех возможных значений в Boolean.
private boolean convertToBoolean(String value) {
boolean returnValue = false;
if ("1".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value) ||
"true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value))
returnValue = true;
return returnValue;
}
Ответ 3
В соответствии с документацией (выделено мной):
Разбирает строковый аргумент как логическое. Возвращаемое значение boolean представляет значение true, если строковый аргумент не равен NULL и равен равно, игнорируя регистр, в строку "true" .
Ответ 4
Если вы пытаетесь получить поведение C (0 == false
и все остальное true
), вы можете сделать это:
boolean uses_votes = Integer.parseInt(o.get("uses_votes")) != 0;
Ответ 5
Я знаю, что это старый поток, но как насчет заимствования из синтаксиса C:
(o.get('uses_votes')).equals("1") ? true : false;
Ответ 6
Томас, я думаю, что ваш код-оболочка или просто само условие - это самый чистый способ сделать то, что вы хотите сделать в java, которое преобразует "1" в значение Boolean True. Фактически, по сравнению с "0" и взятием обратного будет соответствовать поведение C обработки 0 как ложное, а все остальное - как истина.
Boolean intStringToBoolean(numericBooleanValueString) {
return !"0".equals(numericBooleanValueString);
}
Ответ 7
В примечании,
для тех, кто должен иметь нулевое значение для вещей, отличных от строк "true" или "false", вы можете использовать функцию ниже
public Boolean tryParseBoolean(String inputBoolean)
{
if(!inputBoolean.equals("true")&&!inputBoolean.equals("false")) return null;
return Boolean.valueOf(inputBoolean);
}
Ответ 8
Возвращает true, если приходит "y", "1", "true", "on" или все, что вы добавляете аналогичным образом.
boolean getValue(String value) {
return ("Y".equals(value.toUpperCase())
|| "1".equals(value.toUpperCase())
|| "TRUE".equals(value.toUpperCase())
|| "ON".equals(value.toUpperCase())
);
}
Ответ 9
Java строго типизирована. 0 и 1 - это числа, которые отличаются от булевых. Число никогда не будет равно логическому.
Ответ 10
Как насчет этого?
boolean uses_votes =
( "|1|yes|on|true|"
.indexOf("|"+o.get("uses_votes").toLowerCase()+"|")
> -1
);
Ответ 11
У меня был тот же вопрос, и я решил его с этим:
Boolean use_vote = o.get('uses_votes').equals("1") ? true : false;
Ответ 12
Краткая форма вышесказанного будет просто назначить компаратор:
Boolean use_vote = Integer.valueOf(o.get('uses_vote')) == 1;
или же
Boolean use_vote = o.get('uses_vote') == "1";
Ответ 13
Очень простой способ:
resultBoolean = ( valTest == "true" );
если valTest имеет строку "true", логический результат будет true, иначе false;
Вы можете использовать его для 0 или 1 значений:
resultBoolean = ( valTest == "1" );