【问题标题】:Dynamic Conditional Statement动态条件语句
【发布时间】:2012-05-14 16:45:11
【问题描述】:

我想在java中创建动态条件语句
以下是我在文件中的表达,有数百个表达,它们不断变化

0001|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 74))
0002|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 59) && ((condition4 == 3) || (condition5 > 30)))

这些表达式在我的课堂上是硬编码的。

if(condition1==100 && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3))){

if(condition3>74){
return "0001"
}
if(condition3>59 && ((condition4 == 3) || (condition5 > 30))){
return "0002"
}

}

我想创建动态条件语句,如

首先我检查所有条件1==100的表达式
那么对于 ((condition2 == 1) || (condition2 == 2) || (condition2 == 3))
然后根据最终条件返回值

这有点像第一个 DFS,然后是 BFS

有人可以告诉我如何在 java 中检查第一个深度然后是 Bredth First

【问题讨论】:

  • 不太清楚。看起来你想直接从某个编程竞赛中得到一个问题的答案。
  • 您需要将输入变量放入一个单一的结构中,例如数组或字典,然后使用该数据结构在数据而不是代码中表达条件。

标签: java conditional-statements


【解决方案1】:

您的情况是:您想要定义很多条件并连续更改它。您需要有一个解决方案来动态更改表达式并定义新条件。

对于动态情况,例如您的情况,有两种解决方案:

  1. 使用Rule Engine。这很有好处,你可以从http://java.sun.com/developer/technicalArticles/J2SE/JavaRule.html看到更多信息 你可以从here 看到它的开源实现。
  2. 使用Dynamic LanguageScript LanguageScript api。

在第二种解决方案中,您有几个选择。我在下面写了一些:

还有更多的动态语言,如JRuby,你可以通过简单的网络搜索看到它。 你可以从here阅读更多关于Script api的信息。

已编辑:

作为示例,您可以使用BeanShell Script Language 如下:

首先创建一个名为test.bsh 的文件,其中包含打击内容:

if(variable_1 == 100 )
{
   System.out.println("Sample condition checked and is true.");
}
else
{
   System.out.println("Sample condition checked and is false.");
}

来自java的第二组variable_1

import bsh.*;

Interpreter bsh = new Interpreter ();
bsh.set ("variable_1", 100);

最终调用脚本如下:

 bsh.source (script);

结果如下:

Sample condition checked and is true.

通过这种方法,您无需重新编译或重新启动即可更改test.bsh 内容。

【讨论】:

    猜你喜欢
    • 2014-09-14
    • 2016-06-25
    • 2013-04-15
    • 2013-10-06
    • 2012-01-16
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多