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

x = x - 3; 
} 

Я знаю, что выход из этого, это 13 и 7, будет кто-то уход объяснить о том, как он пришел, чтобы быть 13 и 7.Хотя выходной код цикла

+6

Вы знаете, что такое '%' средства? Это [оператор модуля] (http://mindprod.com/jgloss/modulus.html). Чтобы узнать, что делает программа, выполните шаги в своей голове и напишите на листе бумаги, что происходит на каждом этапе. – Jesper

+0

что с этим не так, работает нормально, first it ';; проверьте на 13 и распечатайте его, затем на 10, а затем на 7 и распечатайте его, а затем на 4 –

+0

Замените значение 13, 10 и т. д. для x. Теперь следуйте инструкциям и тем, что они печатают в вашем ноутбуке. – sakthisundar

ответ

2

13 % 2 = 1 поэтому, Вы печатаете 13. Сейчас x = 10. 10 % 2 = 0, поэтому вы не распечатываете 10. x = 7. 7 % 2 = 1, поэтому вы печатаете 7. . 4 % 2 = 0; Теперь x = 1 и петля останавливается.

Оператор % является оператором modulo. Это отпечатывает остаток при делении двух чисел. Например, 14/3 = 4 remainder 2, поэтому 13 % 4 = 2.

+0

Ahhhh, я вижу, это было довольно просто, спасибо, что ваш ответ примет как можно скорее. –

2

Первый х 13, является его> = тогда 4? Да. Введите цикл while. 13% 2 == 1. Да. Печать x (печать 13). Тогда x = x-13, x становится 10. Действительно, 10> = 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 выходит из цикла.

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