Подтвердить что ты не робот

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;
}

Спасибо

4b9b3361

Ответ 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" );