为什么以下代码执行六次?请帮助我理解它是如何工作的,因为我试图把它弄到脑子里但没有成功。
我认为首先执行代码一次,然后将计数增加到 1 ,再次执行 ,将计数增加到< strong> 2 ,执行第三次,将计数增加到 3 ,执行第四次,将计数增加到< strong> 4 ,执行第五次,将计数增加到5,然后停止。这意味着它将执行循环五次次(第一次,然后当计数为1,2,3,4时)。
int count = 0;
do {
System.out.println("Welcome to Java!");
} while (count++ < 5);
答案 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;
}