Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:使用字符串作为源代码的一部分_Java_Boolean_Evaluate - Fatal编程技术网

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
at
main()
方法。搜索“Java”、“Expression”和“Evaluate”@Caumons如果我理解正确,他正在寻找某种Java REPL(但不太清楚).在阅读@Nick Holt给出的线程时,我想知道我是否需要一个解析器?请看
javax.script
API-谢谢您的回答。这正是我想要的。你能告诉我符号“^”是什么吗?使用它,它返回1,而不是“true”或“false”。除了“!”之外,还有其他标志吗?