计算字符串时答案不正确

Incorrect Answers when evaluating a String

本文关键字:不正确 答案 字符串 计算      更新时间:2023-09-26

我的代码如下所示:

    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 打印为真。当我将变量与两个值进行比较时,它不会给出正确的结果。它给出真,即使一半的条件是真的。有什么解决方法吗?请指教。谢谢。

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

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

请尝试(2 < x) && (x < 5)

将我的评论转换为 anwser

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

不,它实际上产生了正确的结果。您的表达式计算方式如下:

  1. 2
  2. 真<5 => 1 <5(类型强制)
  3. 1 <5 => 真

若要变通方法,请尝试指定必须同时满足这两个条件。

System.out.println((Boolean) engine.eval("2