Java - 做循环帮助解释所需

时间:2011-12-29 17:15:47

标签: java loops do-loops

为什么以下代码执行六次?请帮助我理解它是如何工作的,因为我试图把它弄到脑子里但没有成功。

我认为首先执行代码一次,然后将计数增加到 1 ,再次执行 ,将计数增加到< strong> 2 ,执行第三次,将计数增加到 3 ,执行第四次,将计数增加到< strong> 4 ,执行第五次,将计数增加到5,然后停止。这意味着它将执行循环五次次(第一次,然后当计数为1,2,3,4时)。

int count = 0;

    do {

        System.out.println("Welcome to Java!");

    } while (count++ < 5);

4 个答案:

答案 0 :(得分:2)

您是否尝试过this code

int count = 0;

do {

    System.out.println("Welcome to Java! " + count);

} while (count++ < 5);

输出:

Welcome to Java! 0
Welcome to Java! 1
Welcome to Java! 2
Welcome to Java! 3
Welcome to Java! 4
Welcome to Java! 5

这可以帮助您了解正在发生的事情。还有其他人说你的混淆很可能是后增量算子的运作方式。

为了帮助您了解前后增量运算符,请运行another code sample

int a = 0;
int b = 0;
System.out.println("pre increment "+ ++a);
System.out.println("post increment "+ b++);

输出:

pre increment 1
post increment 0

总结:使用后增量表达式之前计算增量变量,预增量表达式之后变量是递增。

答案 1 :(得分:1)

它的后缀运算符首先评估整个表达式然后递增

控制将像这样流动

0
Welcome to Java!
//condition check : 0 then 1
Welcome to Java!
//condition check : 1 then 2
Welcome to Java!
//condition check : 2 then 3
Welcome to Java!
//condition check : 3 then 4
Welcome to Java!
//condition check : 4 then 5
Welcome to Java!
//condition check : 5 then 6

答案 2 :(得分:1)

那是因为您正在使用后期增量。首先评估while条件(来自之前的count增量),然后count递增。

尝试++count(首先递增,然后返回值)。

编辑:

请注意,虽然在

中使用它
for(int i = 0; i < n; i++) {}

没问题(通常会进行优化等),

for(int i = 0; i < n; ++i) {}
从IMO的语义角度来看,

稍微好一些。

在运算符重载的语言中,它变得更加复杂,其中i ++可能具有与++ i不同的副作用。

答案 3 :(得分:0)

count++; // <-- would execute the above code 6 times

是后期增量和

++count; // <-- would execute the above code 5 times 

是预增量

考虑:

while (count++ < 5) System.out.println(count); // prints 1 2 3 4 5
while (++count < 5) System.out.println(count); // prints 1 2 3 4

所以你的do...while首先执行而不进行比较(因为这样做)然后运行比较。

如果是预增量,可以像这样重写:

int count = 0;
do {
    // print
    count = count + 1;
} while (count < 5)

如果它是后增量,它可以像这样重写:

int count = 0;
while (count < 5) {
     // print statement
     count = count + 1;
}