【问题标题】:Java: Use String as part of source code [duplicate]Java:使用字符串作为源代码的一部分[重复]
【发布时间】:2014-03-21 20:27:41
【问题描述】:

今天,我有一个多年来一直在想的问题。
假设您在 Java 中有以下评估:

new EvaluationListener(){  
    public boolean evaluate(boolean[] b){
        return b[0] || b[1];
    }
}

我在我的程序中使用此代码来评估 b[0] 和 b[1] 的不同布尔值的术语,但这并不重要。
目前我将评估写入源代码,让程序运行并在命令行中观察结果。
现在我想知道如何在命令行中实现评估。我希望能够在命令行中输入评估术语,使用 BufferedReader 等读取它,而不是将其写入源代码。

有什么办法吗?我认为可以通过使用某种变量别名(如 $b0$)来实现。但是我怎样才能将逻辑 OR 和 AND 而不是传递给程序呢?

感谢您的回答

【问题讨论】:

  • 我不确定我是否真的理解你的问题,但如果你想传递布尔值以及操作数,你可以使用argsmain() 方法。
  • 搜索“Java”、“表达式”和“评估”
  • @Caumons 如果我理解正确,他正在寻找某种 Java REPL(但不是很清楚)。
  • 在阅读@Nick Holt 给出的线程时,我想知道是否需要解析器?

标签: java boolean evaluate


【解决方案1】:

以下是使用 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

【讨论】:

  • 感谢您的回答。这正是我所寻找的。你能告诉我符号'^'是做什么的吗?使用它,它返回 1 而不是“true”或“false”。除了“!”之外,还有其他符号可以使用吗? ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 2013-11-23
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多