在for循环中使用continue:它产生的顺序

时间:2014-02-04 00:18:38

标签: java oop loops for-loop continue

有人可以解释这个功能的操作顺序,我无法理解它产生的顺序:

    // output
    // Yuhu
    // Tata
    // Yuhu
    // Yuhu
    // 3

public class Main {
public static void main(String[] args) {
    int i;
    for (i = 0; i < 5; i++) {
        if (i >= 3) {
            break;
        }
        System.out.println("Yuhu");
        if (i >= 1) {
            continue;
        }
        System.out.println("Tata");
    }
    System.out.println(i);

  }
}

为什么不是Yuhu,Tata,Yuhu,Tata,3?

3 个答案:

答案 0 :(得分:3)

首次迭代:i0i >= 3false,因此不是break。打印"Yuhu"i >= 1false,因此没有continue。打印"Tata"

第二次迭代:i1i >= 3false,因此没有break。打印"Yuhu"i >= 1true,因此continue此迭代结束。 <{1}}未打印。

第三次迭代:"Tata"i2i >= 3,因此不是false。打印break"Yuhu"i >= 1,因此true此迭代结束。 <{1}}未打印。

第四次迭代:continue"Tata"i3,因此i >= 3突破true循环,输出break循环后的语句打印for

答案 1 :(得分:0)

因为它不会一次到达“Tata”,它只会在i=0时到达那里, continue立即开始循环的下一次迭代

答案 2 :(得分:0)

尝试添加更多调试语句来计算出来......

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        System.out.printf("breaking (i=%d)%n", i);
        break;
    }
    System.out.printf("Yuhu (i=%d)%n", i);
    if (i >= 1) {
        System.out.printf("continuing (i=%d)%n", i);
        continue;
    }
    System.out.printf("Tata (i=%d)%n", i);
}
System.out.println(i);

打印:

Yuhu (i=0)
Tata (i=0)
Yuhu (i=1)
continuing (i=1)
Yuhu (i=2)
continuing (i=2)
breaking (i=3)
3