2013-04-10 103 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