为什么while循环会打印所有数字,而for循环却不打印?

时间:2018-07-18 23:26:27

标签: java algorithm

当我清楚地拥有i < 10时,while循环为什么会打印出1-10之间的所有数字,难道它不应该像for循环那样只打印0-9吗?

while循环和for循环都从索引0开始,为什么它为while循环打印1-10,为循环打印0-9?

public static void main(String args[]) {
    int i = 0, j = 0;

    while(i < 10) {
        i++;
        System.out.print(i + " ");
    }

    System.out.println();

    for(j = 0; j < 10; j++) {
        System.out.print(j + " ");
    }
}

输出:

1 2 3 4 5 6 7 8 9 10 
0 1 2 3 4 5 6 7 8 9 

2 个答案:

答案 0 :(得分:3)

我相信是因为您在打印之前将其添加到i中,从而使第一个打印语句已经是1而不是0。

...代替这个:

while(i < 10) {
    System.out.print(i + " ");
    i++;    
}

答案 1 :(得分:2)

您应注意,两个循环均按预期执行10次。输出不是您最初想的那样,而是与循环的主体以及理解两种循环机制的操作顺序有关。

对于循环,请遵循以下顺序:

  1. 初始化步骤j = 0
  2. 布尔测试j < 10
  3. 执行循环System.out.print(j + " ");的正文
  4. 增加步骤j++
  5. 重复步骤2、3、4,直到布尔测试失败

enter image description here

如您所见,System.out.print(j + " ")在增量步骤j ++之前打印j = 0

如果您希望while循环具有相同的行为,则只需将i++移至其主体的末尾大括号之前即可。

图片来源:Daniel Shiffman的书《学习处理》