为什么这样做
for(int i = 10; i > 0; i--) {
System.out.println("printing " + i);
}
但不是吗?它已被编译器接受,但在运行时不会打印任何内容
for(int j = 10; j == 1; j--) {
System.out.println("printing " + j);
}
如果这是一个愚蠢的问题,我真的很抱歉:/ 它应该是相同的布尔值,不是吗?
答案 0 :(得分:3)
因为您在j
等于1时正在运行循环;但它从10开始。你想要的是:
for(int j = 10; j != 1; j--) {
System.out.println("printing " + j);
}
在这里,您运行循环,而j
不等于1。
编辑:原始失败循环可以自动转换为以下while
循环:
{
int j = 10;
while(j == 1) {
System.out.println("printing " + j);
j--;
}
}
这更清楚地解释了为什么它从未运行过。
答案 1 :(得分:2)
首先,初始化完成(它在第一次迭代时只执行一次):
int j = 10
然后,评估终止表达式:
j == 1
由于j
为10,j == 1
为10 == 1
,即false
。
循环终止表示循环必须完成,因此循环的 body 从不执行。
摘要:如果终止表达式为true
,则会执行循环体。如果它是false
,则身体不会被执行并且循环将完成。
答案 2 :(得分:1)
for(int j = 10; j == 1; j--) {...}
在第一次迭代时,j==1
或10==1
将为false,循环将中断。
for(int j = 10; j != 0; j--) {...}
这会有用。
答案 3 :(得分:1)
您案例中for循环中的termination expression
j == 1
始终为false
。
这就是为什么它不会进入循环并打印任何东西。
来自Java Doc - http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
When the termination expression evaluates to false, the loop terminates.
答案 4 :(得分:1)
一般语法是:
for (intialization; condition; iteration/recursion)
{
// Loop entered if condition evaluates to true.
// At end of loop, recursion condition updated and loop continues based on condition
}// Loop terminates when condition evaluates to false;
在你的情况下,
for(int j = 10; j == 1; j--) {
System.out.println("printing " + j);
}
// You have initialized j=10, but since j!= 1, the loop is not being entered.
要使其正常工作,请将条件j == 1替换为j> = 1
for(int j = 10; j >= 1; j--) {
System.out.println("printing " + j);
}
答案 5 :(得分:1)
for循环条件永远不会成立,因为你从j = 10开始并且条件j == 1将始终为false。而是尝试像。
for(int j = 10; j != 1; j--){
system.out.println("Printing: " + j)
}
OR
for(int j = 10; j > 1; j--){
system.out.println("Printing: " + j)
}
答案 6 :(得分:0)
你的问题是关于for循环的基本问题
在大写for循环中,你给出一个范围,比如我的循环是反向旋转10次意味着0到时间打印你的结果 等,
印刷10 印刷9 印刷8 。 。 。 。 印刷1
最后一个循环不打印任何东西因为不满足条件j == 1
希望你明白......答案 7 :(得分:0)
您的第二个循环中有终止条件的问题。它应该像
for(int j = 10; j > 1; j--) {
System.out.println("printing " + j);
}