在嵌套for循环中缺少int

时间:2013-11-27 04:57:36

标签: java for-loop nested-loops

以下代码:

for (i = 1; i <= 5; i++)
{
    System.out.println();
    for (j = 1; j <= i; j++) {
        System.out.print(" ");
        System.out.print(j);
    }
}

产生

 1
 1 2
 1 2 3
 1 2 3 4
 1 2 3 4 5

在支具中移除:

int i = 0;
int j = 0;

for (i = 1; i <= 5; i++)
{
    System.out.println();
    for (j = 1; j <= i; j++) 
        System.out.print(" ");
        System.out.print(j);
}

产生

 2
  3
   4
    5
     6

我可以理解嵌套for循环正在遍历" "并打印它们,然后只打印一个j,但我不明白j = 1会发生什么。< / p>

4 个答案:

答案 0 :(得分:2)

没有支撑的For循环。您在下面提到的代码:

 for (j = 1; j <= i; j++) 
    System.out.print(" ");
    System.out.print(j);

它等于以下代码:

        for (j = 1; j <= i; j++) {
            System.out.print(" ");
        }
        System.out.print(j);

这就是问题所在,试一试然后继续。

您可以按如下方式进行更改:

        for (j = 1; j <= i; j++) {
            System.out.print(" ");
            System.out.print(j);
        }

输出将是预期的,例如:

  1
  1 2
  1 2 3
  1 2 3 4
  1 2 3 4 5

答案 1 :(得分:2)

第一次通过你的for循环

  1. 设置j = 1,检查j&lt; = i
  2. 打印出空间
  3. 增加j,检查j&lt; = i 此失败,因为i = 1且j = 2
  4. 退出循环,并打印j和j = 2

答案 2 :(得分:1)

由于它只执行一个语句,因此打印时j的值大于内循环的上限(2,3,4,5,6)。

答案 3 :(得分:1)

我解决了

System.out.println();
for (j = 1; j <= i; j++) 
    System.out.print(" ");
    System.out.print(j);

j在打印之前递增j++,因为循环已经过了System.out.print(j);

的迭代