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
退出循环。