java - 评估字符串时的错误答案

标签 java javascript 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"));

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

最佳答案

2 < x < 5不做你认为它做的事。其评价如下:

2 < x < 5
(2 < x) < 5
(2 < 10) < 5
true < 5
1 < 5
true

尝试(2 < x) && (x < 5)相反。

关于java - 评估字符串时的错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936961/

相关文章:

java - 对象创建作为局部变量

java - 与同一 H2 内存数据库建立多个连接

javascript - Mithril.js: "Component template must return a virtual element, not an array, string, etc."是什么意思?

javascript - 将本地 glTF 文件加载到 Javascript 内存中

java - 调试 Java 的 ScriptEngine 对象

java - 使用 Java ScriptEngine (Groovy),如何提高性能?

java - 将 Jruby ScriptEngine 输出重定向到 StringWriter

java - 在 lib 文件夹中添加 jar 文件和在类路径中设置它之间的区别

java - String[] 拆分 string[] 数组 - 错误

javascript - For循环在Jquery中只运行一次