【问题标题】:Convert String Expression into boolean expression将字符串表达式转换为布尔表达式
【发布时间】:2016-11-22 17:10:22
【问题描述】:
class A{

    public static void main(String a[]){
        String ad ="1<2";
        Boolean b = Boolean.parseBoolean(ad);
        if(b){
            System.out.println("true"); 
        }
        else
        {
            System.out.println("false");
        }
    }
}

我希望输出为真,但实际上打印为假。

【问题讨论】:

  • 您正在尝试将“1
  • 您需要使用一些 java 表达式语言解释器来执行此操作。该函数仅将文本转换为真/假,就像 Integer.parseInt 将处理数字一样。

标签: java string boolean


【解决方案1】:

您似乎对Boolean.parseBoolean 的工作方式感到困惑。 javadoc 明确指出:

如果是字符串参数,则返回的布尔值表示值 true 不为 null 且等于字符串“true”,忽略大小写。

即只有像 Boolean.parseBoolean("True")Boolean.parseBoolean("tRuE") 这样的表达式返回 true,没有像 Javascript 的 eval() 那样进行参数评估(尽管在 Java 中是 you can use the ScriptEngine)。

this example:

public static void main (String[] args) throws java.lang.Exception
{
    String ad ="1<2";
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");
    Object result = engine.eval(ad);
    System.out.println(Boolean.TRUE.equals(result)); // true
}

【讨论】:

  • 谢谢,您给出了我想要的确切解决方案。
【解决方案2】:

我们开始:

class A{

public static void main(String a[]){
    String ad ="1<2";
    String tmpDataArray[] = ad.split("<");
   int num1 = Integer.parseInt(String.valueOf(tmpDataArray[0]));
   int num2 = Integer.parseInt(String.valueOf(tmpDataArray[1]));

   // Boolean b = Boolean.parseBoolean(ad);
    if(num1<num2){
        System.out.println("true"); 
    }
    else
    {
        System.out.println("false");
    }
}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2013-11-27
    • 1970-01-01
    • 2019-06-05
    相关资源
    最近更新 更多