我的代码如下所示:
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"));
第一个SOP按预期打印错误,但第二个SOP打印为true。当我将变量与两个值进行比较时,它不会给出正确的结果。它给出了真实,即使条件的一半是真的。有什么解决方法吗?请建议。感谢。
答案 0 :(得分:8)
2 < x < 5
没有按照您的想法行事。评估如下:
2 < x < 5
(2 < x) < 5
(2 < 10) < 5
true < 5
1 < 5
true
请尝试(2 < x) && (x < 5)
。
答案 1 :(得分:4)
将我的评论转为答案
2 < x < 5 => (2 < 10 ) < 5 => (true) < 5 => 1 < 5 => true
答案 2 :(得分:3)
不,它实际上产生了正确的结果。您的表达式的评估如下:
答案 3 :(得分:1)
要解决此问题,请尝试指定必须满足这两个条件。
System.out.println((Boolean)engine.eval(“2&lt; x&amp;&amp; x&lt; 5”));