评估字符串时不正确的答案

Ven*_*bhi 2 javascript java scriptengine

我的代码看起来像这样:

    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    int x = 10;
    engine.eval("x =" + x);
    System.out.println((Boolean) engine.eval("x < 5"));
    System.out.println((Boolean) engine.eval("2 < x < 5"));
Run Code Online (Sandbox Code Playgroud)

第一个SOP按预期打印错误,但第二个SOP打印为true.当我将变量与两个值进行比较时,它不会给出正确的结果.它给出了真实,即使条件的一半是真的.有什么解决方法吗?请建议.谢谢.

Oli*_*rth 8

2 < x < 5不会做你认为它做的事情.评估如下:

2 < x < 5
(2 < x) < 5
(2 < 10) < 5
true < 5
1 < 5
true
Run Code Online (Sandbox Code Playgroud)

试试吧(2 < x) && (x < 5).