我现在正在学习Java,在遍历Java中的循环时,我被困在这里,无法理解为什么以下程序将打印“ Hello”三次。你能解释一下吗?
public class Helloworld {
public static void main(String[] args) {
for (int i =1; i<=2; i++ ) {
for (int j =1; j<=i ; j++) {
System.out.println("Hello");
}
}
}
}
答案 0 :(得分:5)
for
循环迭代:
i=1
j=1 — prints "Hello"
j=2 — breaks out of inner loop, `j <= i` is false.
i=2
j=1 — prints "Hello"
j=2 — prints "Hello"
j=3 — breaks out of inner loop, `j <= i` is false.
这是上面的代码运行时发生的情况。
答案 1 :(得分:3)
要了解原因,请更改
System.out.println("Hello");
到
System.out.println("Hello: i = " + i + ", j = " + j);
再次编译并运行它,并仔细查看打印出的i
和j
的值。
基本上,在外循环的第二次迭代中,内循环运行两次。
如果无法编译和运行程序,则可以使用另一种方式来了解行为。手动执行它。
用铅笔纸,在每个变量的表上画一列。每次变量被分配/修改(例如i = 0
或i++
)时,将使用所有变量的 current 值向表中添加新行。当您进行测试时(例如i<=2
),请从表的最新行中读取变量的值。
经过一些练习,您将可以在头脑中做到这一点。经过更多练习之后,您将能够阅读代码(就像阅读英文文本或数学符号一样),并能够原因了解代码的用途。
或使用调试器:-)
答案 2 :(得分:3)
有时候学习循环时,在纸上写一些小循环会有所帮助。
在这里,您使用变量i和j进行了嵌套循环。
首先,内部循环j = 1,且1小于或等于1(i),因此进行打印。然后是j ++。
j现在为2,不小于或等于1,结束内部循环周期。现在回到外循环,i ++,
i现在是2。 在内部循环内-j = 1,小于或等于2,因此进行第二次打印。现在是j ++。条件仍然成立,因为j(as 2)仍小于或等于2,因此第三次打印。
希望此调试方法对您有所帮助。
答案 3 :(得分:1)
您有两个循环。 i
外部循环运行两次,而内部j
循环则取决于i
和j<=i
部分的值。因此,对于第一个i
循环,j
运行一次,而第二个i
循环j
运行两次,因此运行了三遍。
答案 4 :(得分:0)
这与嵌套循环有关。这里有(2)个循环要注意。对于外循环(i)的每次迭代,内循环(j)可以运行多次。如果将输出更改为输出迭代器,它将使您对该属性有一些了解。
System.out.println("i:"+i+" j:"+j);
OUTPUT: $javac HelloWorld.java
i: 1 j:1
i: 2 j:1
i: 2 j:2
如果您想更详细地了解嵌套循环,请推荐以下精彩视频系列:Nested Looping (The Coding Train)
希望这会有所帮助!