int x = 13;
while(x >= 4) {
if (x % 2 == 1) {
System.out.println(x);
}
x = x - 3;
}
我知道这个的输出,它是13和7,有人会解释它是如何成为13和7。
答案 0 :(得分:2)
首先x是13,是> =然后是4?是。输入while循环。是13%2 == 1。是。打印x(打印13)。然后x = x-13,x变为10. 10> = 4?是。 ......等等。
答案 1 :(得分:2)
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
。
答案 2 :(得分: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
退出循环。
答案 3 :(得分:2)
案例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
运营商摘要:
**%** finds remainder
//如果RHS操作数为0
,则结果未定义
**>=** greater than or equals