int x = 13;
while(x >= 4) {
if (x % 2 == 1) {
System.out.println(x);
}
x = x - 3;
}
我知道它的输出,它是 13 和 7,有人愿意解释一下它是如何变成 13 和 7 的吗?
int x = 13;
while(x >= 4) {
if (x % 2 == 1) {
System.out.println(x);
}
x = x - 3;
}
我知道它的输出,它是 13 和 7,有人愿意解释一下它是如何变成 13 和 7 的吗?
情况1:
---> x = 13;
while(true) // 13 >= 4
if(true) // 13%2 = 1 which is 1==1 is true
then print x
reduce x by 3 // now x ==10
案例2:
---> x = 10;
while(true) // 10 > =4
if(false) // 10 % 2 = 0, 0 == 1 is false
skip
reduce x by 3// now x == 7
案例3:
---> x =7;
while(true) // 7 > = 4
if(true) //7 % 2 ,1==1 is true
print x;
reduce x by 3 // x == 4
案例4:
---> x =4;
while(true) // 4 > = 4
if(false) //4 % 2 ,0==1 is false
skip
reduce x by 3 // x == 4
案例5:
---> x =1;
while(false) // 7 > = 4
skip
operator summary :
**%** finds remainder // 如果 RHS 操作数是,则结果未定义0
**>=** greater than or equals
第一个 x 是 13,是否 >= 然后是 4?是的。进入while循环。是 13%2==1。是的。打印 x(打印 13)。那么 x = x-13,x 变为 10。是 10 >=4 吗?是的。.... 很快。
13 % 2 = 1因此,您打印13. 现在x = 10。
10 % 2 = 0,所以你不打印出来10。现在x = 7。
7 % 2 = 1,所以你打印 7. 现在x = 4。
4 % 2 = 0; 现在x = 1,循环停止。
%运算符是模运算符。这会在两个数字相除时打印余数。例如14/3 = 4 remainder 2,所以13 % 4 = 2。
你不明白什么?
在第一次迭代中,x=13,13%2=1所以它打印13。秒迭代x=10( x=x-3)10%2=0没有打印任何内容。第三次迭代x=7( 10-3),7%2=1因此打印了 7。
之后, x=4 所以什么都没有打印并x=1退出循环。