Java 动态条件语句

Java 动态条件语句,java,conditional-statements,Java,Conditional Statements,我想在java中创建动态条件语句 下面是我在文件中的表达式,有数百个表达式,它们不断变化 0001|((condition1 == 100) && ((condition2 == 1) || (condition2 == 2) || (condition2 == 3)) && (condition3 > 74)) 0002|((condition1 == 100) && ((condition2 == 1) || (condition2 ==

我想在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吗?你的情况是:你想定义很多条件并不断地改变它。您需要有一个动态更改表达式和定义新条件的解决方案

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

  • 使用
    规则引擎
    。这有很大的好处,您可以从中查看更多信息 您可以从中看到它的开源实现
  • 使用
    Dynamic Language
    Script Language
    Script
    api 在第二种解决方案中,您有几个选择。我写了一些如下:

     bsh.source (script);
    
    Sample condition checked and is true.
    
    • Groovy
      :一种完整而精彩的脚本语言。看
    • Spring表达式语言
      Spring
      调用简单表达式的解决方案。看
    • BeanShell
      :一种简单但精彩的脚本语言
    还有更多的动态语言,比如
    JRuby
    ,您可以通过在web上进行简单搜索来查看它。 您可以从中阅读java中
    Script
    api的更多信息

    编辑:

    对于示例,您可以使用
    BeanShell脚本语言
    ,如下所示:

    首先创建一个名为
    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的第二组
    变量_1

    import bsh.*;
    
    Interpreter bsh = new Interpreter ();
    bsh.set ("variable_1", 100);
    
    在最终调用脚本中,如下所示:

     bsh.source (script);
    
    Sample condition checked and is true.
    
    结果如下:

     bsh.source (script);
    
    Sample condition checked and is true.
    

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

    请稍显清楚。看起来您想直接从某个编程竞赛中获得问题的答案。您需要将输入变量放入单个结构中,例如数组或dict,然后使用该数据结构以数据而不是代码表示条件。