Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String JavaME:将字符串转换为布尔值_String_Blackberry_Java Me - Fatal编程技术网

String JavaME:将字符串转换为布尔值

String JavaME:将字符串转换为布尔值,string,blackberry,java-me,String,Blackberry,Java Me,我正在为黑莓手机开发,我遇到了一个愚蠢的问题: 我需要将字符串值“1”和“0”分别转换为true和false。尽管如此,Blackberry JDK基于Java 1.3,所以我不能使用Boolean.parseBoolean、Boolean.valueOf或Boolean.getValue 很明显,我可以做如下事情: if (str.equals("1")) return true; else if (str.equals("0")) return false; 但这看起来非常难看,可能这些字

我正在为黑莓手机开发,我遇到了一个愚蠢的问题:

我需要将字符串值“1”和“0”分别转换为true和false。尽管如此,Blackberry JDK基于Java 1.3,所以我不能使用Boolean.parseBoolean、Boolean.valueOf或Boolean.getValue

很明显,我可以做如下事情:

if (str.equals("1")) return true;
else if (str.equals("0")) return false;
但这看起来非常难看,可能这些字符串值稍后会变为“true”和“false”。那么,有没有其他方法可以在这些类型之间进行转换(String->boolean,Java1.3)

更新:这个问题的所有答案都非常有用,但我需要标记一个,所以我选择了Ishtar的答案


即便如此,我的解决方案还是综合了多种答案

如果您没有
Boolean.valueOf(字符串s)
。。。是的,差不多就是这样。我将定义您自己的静态方法,如:

public static boolean booleanFromString(String s)
{
    return s.equals("1");
}
这将解决“以后可能更改为true或false”的问题,因为您可以在方法中添加/更改该值,而不必更改代码中的任何其他内容

也许这些字符串值可以更改 以后改为“真”和“假”

不要硬编码参数

这样定义你自己的方法

public static final String TRUE = "true"; //"1"

public static boolean strToBool(String s) {
    // don't hard code your parameter.
    return str.equalsIgnoreCase(TRUE);
}

Java的
Boolean
对象(如果我没记错的话)已经有2个常量:

  • Boolean.TRUE
  • Boolean.FALSE
您可以使用
Boolean.booleanValue()
返回它对应的
Boolean

您可以创建自己的
valueOf(String s)
方法来返回
boolean
和/或
boolean
,如下所示:

public static boolean toBoolean(String s) {
    return ((s != null) && s.equalsIgnoreCase("true"));
}

public static Boolean valueOf(String s) {
    return (toBoolean(s)? Boolean.TRUE : Boolean.FALSE);
}

您应该检查null和空格字符。移除它们并检查值

return (str!=null && str.trim().equals("1"));
如果您以后将其更改为“真/假”,则不会意外订购。使用错误参数调用将引发异常,而不是猜测并返回false。在我看来,
“pancake”
不是
false

公共静态布尔stringToBool(strings){
public static boolean stringToBool(String s) {
        s = s.toLowerCase();
        Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
        Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));

        if (trueSet.contains(s))
            return true;
        if (falseSet.contains(s))
            return false;

        throw new IllegalArgumentException(s + " is not a boolean.");
}
s=s.toLowerCase(); Set-trueSet=newhashset(Arrays.asList(“1”、“true”、“yes”); Set falseSet=newhashset(Arrays.asList(“0”、“false”、“no”); 如果(trueSet.contains) 返回true; if(falseSet.contains) 返回false; 抛出新的IllegalArgumentException(s+“不是布尔值”); }

增强答案。

实际上。。在这种情况下,我会硬编码参数,因为“true”字符串的定义是一个(或一组)非常特殊的值+1尽管如此。@pst:你是对的。但OP的情况不同。请参见-->
字符串值可以更改
@John然后我会在方法中更改它们;-)@pst:同样,你是对的。所以答案是将其封装到方法中。@Brian:更改方法体。或者将方法一分为二。无论如何,把它记录下来。这个问题把我引向了DailyWTF的文章。我不是在侮辱你,只是建议布尔值的变化应该是非常罕见的,请保持简单,即使你在函数中硬编码“1”或“true”,也没关系。有些事情是确定的,有些则永远不会成为核心语言。
public static boolean stringToBool(String s) {
        s = s.toLowerCase();
        Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
        Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));

        if (trueSet.contains(s))
            return true;
        if (falseSet.contains(s))
            return false;

        throw new IllegalArgumentException(s + " is not a boolean.");
}