0

我正在尝试使用作为输入的字符串生成一些条件。
例如,我得到输入字符串“length = 15”,我想从中创建条件:length == 15。更具体地说,我的程序中有一个名为 length 的 int,它被设置为具体值。
我想从用户那里得到一个条件作为输入(“length < 15”或“length = 15”....)并创建一个 if 语句来生成条件并对其进行测试。
最好的方法是什么?
非常感谢

4

3 回答 3

1

除非您在谈论代码生成(即通过输入字符串生成 Java 代码),否则您无法基于字符串生成 if 语句。

您必须为您的条件语言编写一个解析器,并解释生成的解析树。

最后它看起来像这样:

Condition cond = ConditionParser.parse("length = 15");

if (cond.eval()) {
    // condition is true
}
于 2012-05-14T16:23:30.317 回答
0

使用字符串标记器。区分标记(或输入字符串的最小部分)的默认方法是空格,这对您有利。查看 javadocs 了解详情: http ://docs.oracle.com/javase/1.3/docs/api/java/util/StringTokenizer.html

于 2012-05-14T16:20:54.713 回答
0

根据您对输入格式的限制,您可以考虑使用 Rhino 嵌入 Javascript。您的“条件”必须是有效的 JavaScript 代码。像这样的东西(免责声明:尚未编译):

import javax.script.*;

public bool evalCondition (Object context, String javascript)  {
  ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
  Object result = engine.eval(javascript);
  Boolean condTrue = (Boolean)result;
  return condTrue;
}

有关更多详细信息,请参阅嵌入 Rhino 教程

于 2012-05-14T16:57:43.623 回答