返回哪个条件终止循环

时间:2017-03-18 12:16:10

标签: java loops conditional-statements

说我循环时有以下内容:

int var1 = 3, var2 = 1;
while (var1 != 0 && var2 != var1) {
    var1--;
}

知道导致循环结束的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

您的选择基本上是:

  1. 之后再次检查,或

  2. 将信息保存到变量。

  3. 这里#2:

    int var1 = 3;
    int var2 = 1;
    boolean result1;
    boolean result2 = false;
    while ((result1 = var1 != 0) && (result2 = var2 != var1)) {
        var1--;
    }
    

    注意您需要result2上的默认值(如果您愿意,可以使用true,代码中有任何意义)因为&&短-circuits,这意味着如果第一个操作数不为真,则第二个操作数永远不会被评估,并且编译器会抱怨result2可能尚未初始化。

    实际上,您只需要result1(因为如果result2result1false将无法更新,所以它并没有真正告诉您任何内容;如果result1false,则result2的值将来自之前的循环[或默认值])。你这样做可能会更好:

    int var1 = 3;
    int var2 = 1;
    boolean result1;
    while ((result1 = var1 != 0) && var2 != var1) {
        var1--;
    }
    if (result1) {
        // It was the "var2 != var1" condition that ended the loop
    } else {
        // It was the "va1 != 0" condition that ended the loop
    }
    

    如果您希望始终因某些原因评估这两个选项,Bubletan points out,您可以使用&,其中(与布尔值)就像&&一样,除非它不是int var1 = 3; int var2 = 1; boolean result1; boolean result2; while ((result1 = var1 != 0) & (result2 = var2 != var1)) { var1--; } 。 t短路:

    =SUBTOTAL(3, B$2:B2)