2015-12-03 129 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)”用于区分大小写。

相关问题