我正在尝试评估这个表达式:
ScriptEngineManager sem = new ScriptEngineManager ()
ScriptEngine scriptEngine = sem.getEngineByName("js") ;
String expr = "true ^ true";
Boolean obj = (Boolean) scriptEngine.eval(expr);
然而返回的结果是java Double。我尝试了 String expr 的各种选项,例如:
String expr = "0x1 ^ 0x0";
String expr = "1 ^ 0";
基本上我希望能够使用 JavaScript 引擎来评估可能看起来像这样的各种表达式:
"ture && false || false (true || false && true || false XOR true)"
所有其他运算符,如 && 或 || 当我评估这样的表达式并返回布尔值时工作得很好,但是当它出现 XOR(它具有 JavaScript 等效的按位 ^ 运算符)时,它返回 Double。我真的不想将表达式转换为将 XOR 替换为某些逻辑运算符(例如 ((true || false) && !(true && false)) ),因为那时我必须解析整个表达式字符串才能转换 XOR成上面的逻辑表达式。我评估这个表达式的重点是让我能够在不必解析它的复杂性的情况下进行评估。
任何帮助都感激不尽!提前致谢!