gpt4 book ai didi

java - 循环遍历 2 个不同的数组来评估 Java 中的条件

转载 作者:行者123 更新时间:2023-12-02 00:56:36 25 4
gpt4 key购买 nike

我正在尝试在数据库中创建一个逻辑,为某些字段创建规则,然后根据 Java 中的这些规则创建条件逻辑。

示例1:

List1 = [OR, AND]
List2 = [true, false, true]

例如上面我想通过循环遍历java中的数组来检查if (true OR false AND true)。我知道我使用的下面的代码对于这个要求是完全错误的,并且没有评估我所需的条件,即 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]

最佳答案

您不需要循环两个数组,因为您总是希望带有参数的数组比带有运算符的数组长一个元素:

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}));
}
}

输出:

true
false
false

关于java - 循环遍历 2 个不同的数组来评估 Java 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61281966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com