development

Boolean.parseBoolean (“1”) = false…?

big-blog 2020. 11. 7. 10:48
반응형

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

감사


"true"boolean을 나타내는 문자열 값만 허용합니다 true. 당신이 할 수있는 최선은

boolean uses_votes = "1".equals(o.get("uses_votes"));

(가) 경우 또는 Map실제로 "실재물"을 나타냅니다, 내가 생각하는 자바 빈즈는 더 나은 방법입니다. 또는 구성 설정을 나타내는 경우 Apache Commons Configuration을 살펴볼 수 있습니다 .


가능한 모든 값을 부울로 변환하는 작은 유틸리티 함수가 있습니다.

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

문서 에 따르면 (강조 내) :

문자열 인수를 부울로 구문 분석합니다. 반환 된 부울은 문자열 인수가 null이 아니고 대소 문자를 무시하고 문자열 "true"동일한 경우 true 값을 나타냅니다 .


C의 동작을 얻으려는 경우 ( 0 == false다른 모든 것은 true) 다음과 같이 할 수 있습니다.

boolean uses_votes = Integer.parseInt(o.get("uses_votes")) != 0;

나는 이것이 오래된 스레드라는 것을 알고 있지만 C 구문에서 빌리는 것은 어떻습니까?

(o.get('uses_votes')).equals("1") ? true : false;

Thomas, 래퍼 코드 또는 조건 자체가 Java에서 원하는 작업을 수행하는 가장 깨끗한 방법이라고 생각합니다. "1"을 Boolean True 값으로 변환하는 것입니다. 실제로, "0"과 비교하고 역을 취하면 0을 거짓으로 취급하고 나머지는 모두 참으로 취급하는 C 행동과 일치합니다.

Boolean intStringToBoolean(numericBooleanValueString) {
  return !"0".equals(numericBooleanValueString);
}

참고로
"true"또는 "false"문자열 이외의 항목에 대해 null 값을 가져야하는 경우 아래 함수를 사용할 수 있습니다.

public Boolean tryParseBoolean(String inputBoolean)
{    
    if(!inputBoolean.equals("true")&&!inputBoolean.equals("false")) return null;
    return Boolean.valueOf(inputBoolean);
}

'y', '1', 'true', 'on'또는 유사한 방식으로 추가하는 모든 항목이 오면 true를 반환합니다.

boolean getValue(String value) {
  return ("Y".equals(value.toUpperCase()) 
      || "1".equals(value.toUpperCase())
      || "TRUE".equals(value.toUpperCase())
      || "ON".equals(value.toUpperCase()) 
     );
}

Java는 강력한 형식입니다. 0과 1은 부울과 다른 유형 인 숫자입니다. 숫자는 부울과 같지 않습니다.


나는 같은 질문을 가지고 그것을 해결했습니다.

Boolean use_vote = o.get('uses_votes').equals("1") ? true : false;

이건 어때?

boolean uses_votes =
  ( "|1|yes|on|true|"
      .indexOf("|"+o.get("uses_votes").toLowerCase()+"|")
      > -1
  );

아주 간단한 방법 :

resultBoolean = ( valTest == "true" );

valTest에 문자열 "true"가 있으면 부울 결과는 true가되고 그렇지 않으면 false가됩니다. 0 또는 1 값에 사용할 수 있습니다.

resultBoolean = ( valTest == "1" );

참고 URL : https://stackoverflow.com/questions/7734202/boolean-parseboolean1-false

반응형