Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 嵌套if或代码多次?_Java_Multiple Conditions_Nested If - Fatal编程技术网

Java 嵌套if或代码多次?

Java 嵌套if或代码多次?,java,multiple-conditions,nested-if,Java,Multiple Conditions,Nested If,因为我找不到一个类似于我的构造的问题,所以我要问它 我有以下代码: for (Object o : array1) { for (Object o2 : array2) { if (condition1) { //get a variable for condition2 (depends on iteration elements) if (condition2) { if (conditi

因为我找不到一个类似于我的构造的问题,所以我要问它

我有以下代码:

for (Object o : array1) {
    for (Object o2 : array2) {
        if (condition1) {
            //get a variable for condition2 (depends on iteration elements)
            if (condition2) {
                if (condition3) {
                    //do something
                } else if (condition4) {
                    //do something
                }
            }
        }
    }
}
我也可以把它写成

for (Object o : array1) {
    for (Object o2 : array2) {
        if (condition1 && condition3) {
            // get a variable for condition2 (depends on iteration elements)
            if (condition2) {
                // do something
            }
        } else if (condition1 && condition4) {
            // get a variable for condition2
            if (condition2) {
                // do something
            }
        }
    }
}
这也是同样的道理。在第一个示例中,我尽可能多次使用代码,而在第二个示例中,我必须多次使用相同的代码

现在我读到,如果可能的话,应该避免筑巢。然而,在我的理解中,与第一个示例中的代码不同,多次使用相同的代码也更干净

我的问题是,是否应该避免重复使用相同代码的成本?我在这里询问的是最佳实践/标准,而不是意见


我知道我可以将它移动到一个单独的方法中,但最终我可能会有大约相同数量的代码

编辑:

在Lino的回答和评论的帮助下,我提出了以下构想:

for (Object o : array1) {
    // get a variable for condition2 (depends on iteration elements)
    if (condition2) {
        for (Object o2 : array2) {
            if (condition1) {
                if (condition3) {
                    // do something
                } else if (condition4) {
                    // do something
                }
            }
        }
    }
}

假设条件3和4仅在条件1和条件2的计算结果必须为
true
时执行,则以下代码段将最有效:

for (Object o : array1) {
    for (Object o2 : array2) {
        if (condition1 && condition2) {
            if (condition3) {
                //do something
            } else if (condition4) {
                //do something
            }
        }
    }
}
如果您仍然不喜欢嵌套的ifs,您也可以存储来自
条件1和&condition2
的结果:

for (Object o : array1) {
    for (Object o2 : array2) {
        final boolean condition1And2 = condition1 && condition2;
        if (condition1And2 && condition3) {
             //do something
        } else if (condition1And2 && condition4) {
             //do something
        }
    }
}

目前,这两个代码段的作用并不相同。在第一种情况下,仅当满足条件1和2时,才执行条件3和4。在第二种情况下,它有些不同,条件2可以满足,如果1和3是,或者如果1和4是,那么我应该为条件2获取一个变量,如果我不想在每次迭代中执行该部分?@XtremeBaumer在迭代之前获取该变量怎么样?如果它不依赖于迭代中的元素,那么它可能工作得最好,但是它确实依赖于元素,因此我无法得到它before@XtremeBaumer从内环还是外环的元素?如果它来自外部,则可以在内部循环之前定义它。如果它确实依赖于内在,那么你就不会在每一天都来呼唤它iteration@XtremeBaumer很抱歉让您失望,但最佳实践仍然是基于意见的。。。