2015-12-03 187 views
1

如果String變量的內容是布爾值,我需要在java中查找。 我得到「True」或「False」或「garbage」作爲字符串。檢查數據的最佳方法是否爲布爾型

尋找一種在數據爲「真」或「假」時返回true的方法&當任何「其他值」時爲false。

代碼我寫道:

Boolean checkBoolean(String val){ 
     boolean result; 
     switch(val){ 
     case "true": 
     result =true; 
     break; 
     case "false": 
     result =true; 
     break; 
     default: 
      result = false; 
     } 
     return result; 
    } 

由於事先

+1

你寫了任何代碼嗎? –

+0

是的,請檢查編輯的問題,對於那個 –

+0

@newguy確實有關係嗎?也就是說,「true」會返回true,但「True」會返回false? – entpnerd

回答

-2

數據類型boolean用於包含用於truefalse值。所以如果你聲明一個變量爲boolean它將包含truefalse。您可以根據您的要求使用該結果。例如:

boolean i = true; 
boolean u = false; 
+1

OP正在嘗試解析輸入字符串。檢查提供方法簽名。 – NPToita

-1

我想你想做的事可以做這個做什麼:

return myBoolean instanceof Boolean; 
0

你應該使用:

public boolean getBool(String s) { 
    return (s.equals("True") || s.equals("False")); 
} 

如果你想接受的情況下,insensitiv例如:TrUe,fALSe,等使用

s.equalsIgnoreCase("... ") 
0

鑑於這種情況下,其實並不重要,我會嘗試下面的代碼:

boolean checkBoolean(String val){ 
    if ("true".equalsIgnoreCase(val)) { 
     return true; 
    } else if ("false".equalsIgnoreCase(val)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

這是非常相似,你有什麼上面,但情況無關。如果我在這裏錯過了一些隱藏的要求,請告訴我。

-1

試試這個:

public static void main(String[] args) { 
     String i = "true"; 
     boolean z = checkBoolean(i); 
     System.out.println(z); 
    } 

    public static boolean checkBoolean(String i){ 
     if(i.equalsIgnoreCase("true")||i.equalsIgnoreCase("false")){ 
      return true; 
     } 
     return false; 
    } 
+0

現在它甚至不編譯。 – EJP

+0

對不起,變量我應該是字符串類型,我糾正它@EJP – Logos

1

我會在這裏質疑的目標。你可能真正想知道的是你是否收到了"true"的可接受形式。在這種情況下,Boolean.parseBoolean()正是您所需要的。

+0

好的電話。這也將是案例不可知的。 – entpnerd

+0

對象是要找到如果我得到的東西是布爾值或不是,如果我使用Boolean.parseBoolean(「false」)它將返回false,但我希望在這裏爲真,因爲它是一個布爾值。 –

+0

從哪裏得到它?問題如何出現?您通常可以設計解決這類問題的方法:例如,在UI中使用複選框,而不是字符串字段。 – EJP

2

假設,如果val爲TRUE或FALSE(忽略大小寫),則需要TRUE。

boolean checkBoolean(String val){ 
    val = val.toLowerCase(); 
    return (val.equals("true") || val.equals("false")); 
} 

如果另一方面,如果字符串爲TRUE(忽略大小寫)則需要函數返回true,否則返回false;使用

Boolean boolean1 = Boolean.valueOf("true"); 
boolean boolean2 = Boolean.parseBoolean("true"); 

對於上述方法,請檢查javadoc

只是使用布爾代替布爾的警告。

  • 第一個是Object,第二個是原始類型。
  • 第一個,你會得到更多有用的方法。
  • 考慮到記憶費用,第二個便宜。 現在選擇你的方式。
+0

謝謝,你的第一個解決方案就是我的答案。 –

+0

另外,你可以很容易地在它們之間進行轉換,所以,你可以預處理一些字符串,並且在那之後,如果內存很關鍵,那麼使用原始'boolean'工作。同樣適用於'Integer'和'int'以及其他基元。 – Shirkam

0

你可以試試:

Boolean checkBoolean(String val){ 
    if(val.trim().equalsIgnoreCase("true")) 
    { 
     return true; 
    } 
    else if(val.trim().equalsIgnoreCase("false")) 
     return true; 
    else 
     return false; 
} 

這樣,您就不必聲明局部布爾變量。

修剪允許您發送帶有空格的字符串。

並且IgnoreCase可幫助您發送大小寫較低的字符串,例如TruEfaLSe

0

你可以做String.matches(字符串表達式)的

public boolean isBooleanCheck(String s) { 
    return (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("false")); 
} 
0

使用正則表達式。

return val.matches(「(?i)(true)|(false)」);

「(?i)」用於區分大小寫。

相關問題