2013-04-10 102 views
1
int x = 13; 
while(x >= 4) { 
if (x % 2 == 1) { 
System.out.println(x); 
} 

x = x - 3; 
} 

我知道这样做的输出,它是13和7,会有人照顾,因为它是怎么来的13和7While循环码输出

+6

你知道什么''%手段是不确定的?这是[模数运算符](http://mindprod.com/jgloss/modulus.html)。要了解程序的功能,请按照您的步骤进行操作,并在每张纸上写上一张纸。 – Jesper 2013-04-10 06:54:07

+0

它有什么问题,它工作正常, 首先它';;检查13并打印它,然后是10,然后是7并打印它,然后是4 – 2013-04-10 06:54:55

+0

用x替换值13,10等等。现在按照说明和它在笔记本上打印的内容。 – sakthisundar 2013-04-10 06:55:41

回答

2

13 % 2 = 1因此,您打印13。 Now x = 1010 % 2 = 0,所以你不打印10。 Now x = 77 % 2 = 1,所以你打印7. 现在x = 44 % 2 = 0; 现在x = 1和循环停止。

%运算符是模运算符。这将打印除以两个数字时的余数。例如14/3 = 4 remainder 2,所以13 % 4 = 2

+0

Ahhhh我明白了,这很简单,谢谢你的回答,我会尽快接受。 – 2013-04-10 07:00:28

2

首先x是13,是不是说明> =那么4?是。输入while循环。是13%2 == 1。是。打印x(打印13)。那么x = x-13,x变成10.是10> = 4?是。 ....等等。

2

你不明白什么?

在第一次迭代中,x=13,13%2=1因此它打印13。秒迭代,x=10x=x-310%2=0,没有打印。第三次迭代x=710-3),7%2=1因此打印出7。

之后,x = 4因此没有任何内容被打印,并且x=1退出循环。

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