Java我有一个字符串变量";a>;百安居酒店&;z>;c&&;x==y";我想转换成一个正常的if条件表达式 inta=0;int z=0;int c=0;int x=0;int y=0;再 字符串myarray[0]=“a>b&&z>c&&x==y”; String myarray[1]=“ac&&x

Java我有一个字符串变量";a>;百安居酒店&;z>;c&&;x==y";我想转换成一个正常的if条件表达式 inta=0;int z=0;int c=0;int x=0;int y=0;再 字符串myarray[0]=“a>b&&z>c&&x==y”; String myarray[1]=“ac&&x,java,string,if-statement,Java,String,If Statement,您无法在Java中执行这样用字符串编写的表达式,并获取周围程序的上下文--a,等等。您可以使用Javascript引擎计算自包含表达式,但这并不能解决实际问题 您可以做的是将其设置为布尔值数组: int a=0;int z=0;int c=0;int x=0;int y=0; any more String myarray[0] = "a>b && z>c && x==y"; String myarray[1] = "a<b &&

您无法在Java中执行这样用
字符串编写的表达式,并获取周围程序的上下文--
a
,等等。您可以使用Javascript引擎计算自包含表达式,但这并不能解决实际问题

您可以做的是将其设置为
布尔值
数组:

int a=0;int z=0;int c=0;int x=0;int y=0; any more

String myarray[0] = "a>b && z>c && x==y";
String myarray[1] = "a<b && z<c && x==y";
String myarray[2] = "a>b && z>c && x<=y";
String myarray[n]

for(i=0;i<myarray.size();i++){
        if(myarray[i]){
        here code..
        }
}
boolean[]myarray=new boolean[4];
myarray[0]=a>b&&z>c&&x==y;

myarray[1]=ac&&x您可以在Java中完成它,只需做一些样板工作

boolean[] myarray = new boolean[4];
myarray[0] = a>b && z>c && x==y;
myarray[1] = a<b && z<c && x==y;
myarray[2] = a>b && z>c && x<=y;
...
for(int i=0;i<myarray.length;i++){
    if(myarray[i]){
        // whatever
    }
}

请记住,这将对每个表达式求值一次且仅求值一次。即,如果
a
的值更改,这些更改将不会反映在
myarray
myarray[i]=false??不运行a>b&&z>c&&x==y或a@cihad7887,什么?这种方法设置
myarray[i]
以确定该表达式的结果是真还是假,而不是表达式本身,这是无法做到的,然后对其求值。抱歉,我不理解我的错误。我在myarray.add(rs.getBoolean(“column”);在myarray.get(0)之后创建List myarray=new ArrayList();在myarray.get(1)之后添加(rs.getBoolean(“column”);在myarray.get(0)之后创建false myarray.get(1)-->false??如何转换if的条件?…是吗?然后会发生什么?
public interface Expression {
    boolean evaluate();
}

public class Expression1 implements Expression {
    Integer a;
    Integer b;
    Integer c;
    Integer x;
    Integer y;
    Integer z;

    public Expression1(Integer a, Integer b, Integer c, Integer x, Integer y, Integer z){
        this.a = a;
        this.b = b;
        // ... the rest
    }

    public boolean evaluate(){
        return a>b && z>c && x==y;
    }
}

// the other Expression# classes

Expression[] expressions = new Expression[4];
expressions[0] = new Expression1(a,b,c,x,y,z);
expressions[1] = new Expression2(a,b,c,x,y,z);// make Expression2/Expression3/Expression4 classes

for(Expression expression : expressions){
    if(expression.evaluate()){
    // your code here
    }
}