布林在for循环中

时间:2014-06-23 09:26:28

标签: java loops boolean

为什么这样做

 for(int i = 10; i > 0; i--) {
        System.out.println("printing " + i);
    }

但不是吗?它已被编译器接受,但在运行时不会打印任何内容

for(int j = 10; j == 1; j--) {
    System.out.println("printing " + j);
}

如果这是一个愚蠢的问题,我真的很抱歉:/ 它应该是相同的布尔值,不是吗?

8 个答案:

答案 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 == 110 == 1,即false

循环终止表示循环必须完成,因此循环的 body 从不执行。

摘要:如果终止表达式为true,则会执行循环体。如果它是false,则身体不会被执行并且循环将完成。

答案 2 :(得分:1)

for(int j = 10; j == 1; j--) {...}

在第一次迭代时,j==110==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);
}