2012-05-14 63 views
0

我想在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
然后((条件2 == 1)||(条件2中的所有表达式== 2 )||(条件2 == 3))
然后根据最终条件返回值

它是像第一DFS然后BFS

可以一些体可以让我知道如何检查第一个深度,然后在java中检测第一个Bredth

+0

不太清楚。看起来你想从一些编程比赛中直接回答问题。 –

+0

您需要将输入变量放入单个结构中,例如数组或字典,然后用数据结构表示数据而不是代码中的条件。 –

回答

1

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

有动态风云二的解决方案,如您的情况:

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

在第二种解决方案中,您有几种选择。我写一些在以下内容:

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

编辑:

对于样品,你可以使用BeanShell Script Language为follwoing:

首先创建一个名字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."); 
} 

其次设置variable_1从Java:

import bsh.*; 

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

并在最后调用脚本如下:

bsh.source (script); 

和结果将是如下:

Sample condition checked and is true. 

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