需要使用java递归方法的帮助,如下所述



我有一个对象,里面有操作数和谓词。我有以下模型:

operand[0] - predicates = NULL
- operands[0] - predicates = NULL
- operands[0] - operands = NULL
- predicates[0] - tableVal="val1.aaa"
- predicates[1] - tableVal="val.bbb"
- predicates[2] = tableVal="val5.ccc"
- operands[1] - operands = NULL
- predicates[0] - tableVal="val3.asd"
- predicates[1] - tableVal="val2.ccc"

我正在寻找一个包含"bbb"我需要一个递归方法来遍历整个结构,直到它找到tableVal包含"bbb"的谓词。

我试过这样做:

private String searchInsideStructure(Object obj, int indexOperands) {
if (null != obj.predicates) {
indexPredicates = 0;
while(obj.predicates.length > indexPredicates) {
if(predicates[indexPredicates].tableVal.contains("bbb")) {
return tableVal;
}
indexPredicates++;
}
}
if (null != obj.operands) {
while (indexOperands < obj.operands.length) {
searchInsideStructure(obj.operands[indexOperands], indexOperands);
indexOperands++;
}
}
return null;
}
.................
indexOperands = 0;
searchedField = searchInsideStructure(initialObj, indexOperands);
if (null != searchedField) {
return searchedField
}

但是它返回null。如何更改此递归方法以遍历操作数,同时查找谓词并在谓词中找到所需的tableVal (" value .bbb"在这个例子中)??谢谢!

有两种修复方法可以考虑:

  1. 在第二个while循环中,您应该验证searchInsideStructure的结果,如果不为null则传播它
  2. 您应该避免传播indexOperands,因为它会使您在测试时跳过一些谓词。然后您可以使用for(each)循环来浏览谓词。

最新更新