Java:使用字符串作为源代码的一部分
今天我有一个多年来一直萦绕在脑海中的问题。Java:使用字符串作为源代码的一部分,java,boolean,evaluate,Java,Boolean,Evaluate,今天我有一个多年来一直萦绕在脑海中的问题。 考虑在java中有以下评价: new EvaluationListener(){ public boolean evaluate(boolean[] b){ return b[0] || b[1]; } } 我在程序中使用这段代码来计算b[0]和b[1]的不同布尔值的项,但这在这里根本不重要。 在我将评估写入源代码时,让程序运行并在命令行中查看结果。 现在我想知道如何在命令行中实现评估。我希望能够在命令行中输入评估
考虑在java中有以下评价:
new EvaluationListener(){
public boolean evaluate(boolean[] b){
return b[0] || b[1];
}
}
我在程序中使用这段代码来计算b[0]和b[1]的不同布尔值的项,但这在这里根本不重要。在我将评估写入源代码时,让程序运行并在命令行中查看结果。
现在我想知道如何在命令行中实现评估。我希望能够在命令行中输入评估术语,使用BufferedReader等读取它,而不是将其写入源代码。 有什么办法吗?我认为可以使用一些变量别名,比如$b0$。但是我怎样才能将逻辑OR和NOT传递给程序呢
感谢您的回答这里有一个使用Java脚本API进行表达式计算的示例:
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("ECMAScript");
scriptEngine.put("b1", true);
scriptEngine.put("b2", false);
System.out.println(scriptEngine.eval("b1 || b2"));
System.out.println(scriptEngine.eval("b1 && b2"));
运行时,此代码将打印:
true
false
我不确定我是否真正理解了你的问题,但是如果你想传递布尔值和操作数,你可以使用
args
atmain()
方法。搜索“Java”、“Expression”和“Evaluate”@Caumons如果我理解正确,他正在寻找某种Java REPL(但不太清楚).在阅读@Nick Holt给出的线程时,我想知道我是否需要一个解析器?请看javax.script
API-谢谢您的回答。这正是我想要的。你能告诉我符号“^”是什么吗?使用它,它返回1,而不是“true”或“false”。除了“!”之外,还有其他标志吗?