[英]Looping through 2 different Arrays to evaluate a condition in Java
我正在尝试在数据库中创建一个逻辑,为某些字段创建规则,然后根据 Java 中的这些规则创建条件逻辑。
示例 1:
List1 = [OR, AND]
List2 = [true, false, true]
例如在上面我想通过在 java 中循环遍历 arrays 来检查是否(真或假和真)。 我知道我使用的以下代码对于这个要求是完全错误的,并且没有评估我要求的条件,即 if(true OR false AND true)。
请注意,我只希望 Java 中的此代码不是脚本语言。
boolean previousResult = false;
for(int i=0;i<List1.size();i++) {
for(int j=0; j<List2.size();j++){
if(List1.get(i) == "OR"){
if(true || false){
previousResult = true;
}
}else{
if(previousResult && true){
previousResult = true;
}
}
}
}
数组长度会改变,但会遵循以下相同的模式:
示例 2:
List1 = [OR, AND, OR]
List2 = [true, false, true, false]
示例 3:
List1 = [OR, AND, OR, AND]
List2 = [true, false, true, false, true]
示例 4:
List1 = [OR, AND, OR, AND, OR]
List2 = [true, false, true, false, true, false]
您不需要遍历两个 arrays,因为您总是希望您的数组与 arguments 比具有运算符的数组长一个元素:
class Playground {
static enum BinaryOp {
OR,
AND
}
private static boolean evaluate(BinaryOp[] ops, Boolean[] vals) {
assert vals.length > 1;
assert ops.length == vals.length - 1;
boolean result = vals[0];
for (int i = 0; i < ops.length; i++) {
if (ops[i].equals(BinaryOp.OR)) {
result = result || vals[i + 1];
} else {
result = result && vals[i + 1];
}
}
return result;
}
public static void main(String[ ] args) {
System.out.println(
evaluate(
new BinaryOp[] {BinaryOp.OR},
new Boolean[] {false, true}));
System.out.println(
evaluate(
new BinaryOp[] {BinaryOp.AND},
new Boolean[] {false, true}));
System.out.println(
evaluate(
new BinaryOp[] {BinaryOp.AND, BinaryOp.OR},
new Boolean[] {false, true, false}));
}
}
Output:
true
false
false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.