Что делается в этом блоке while?

Я начинающий в java, учусь. В этом фрагменте кода я не понимаю, что делает блок while в методе. Кто-то объясняет мне часть while? Заметь: я понимаю, кроме эту часть.

Здесь код:

package onlyfun.caterpillar;

public class MathFoo {
    private static int num1;
    private static int num2;

    public static void setNum1(int n) {
        num1 = n;
    }

    public static void setNum2(int n) {
        num2 = n;
    }

    public static int gcd() {
        int r = 0;
        while(num2 != 0) { 
            r = num1 % num2; 
            num1 = num2; 
            num2 = r; 
        } 
        return num1;
    }
}

Хранилище, чтобы видеть код:

https://github.com/gilbertoquinteroA/JavaSE6Tutorial/blob/master/example/B/src/MathFoo.java

0
задан 17.01.2017, 00:35
0 ответов

Блок while возможно описывать так:

//mientras que la variable num2 sea diferente de 0
while(num2 != 0) { 
    //en una variable temporal r almacenamos el valor del módulo
    //de num1 respecto a num2, es decir
    //el resto de la división de num1 entre num2
    //por ejemplo, 7 % 3 = 1 porque 7 / 3 = 2 con residuo 1
    r = num1 % num2; 
    //la variable num1 tomará el valor de num2
    num1 = num2;
    //la variable num2 tomará el valor del residuo de num1 respecto a num2
    //que se encuentra almacenado en r
    //si r toma un valor de 0, es decir que num1 se puede dividir exactamente
    //por num2, entonces se termina el ciclo while
    num2 = r; 
}

На всякий случай, что видно здесь, является осуществлением наибольшего общего делителя используя алгоритм Euclides.

6
ответ дан 03.12.2019, 17:39

Синтаксис в общем: while (condición) { instrucciones a ejecutarse } где условие - выражение, которое дает результат true или false на основании которого цикл работает или нет. Напиши и протестируй следующий код, где мы кроме того видим пример использования инструкции break.

public static int gcd() {
    //Declaras la variable.
    int r = 0;
    //Pones el bucle requerido, en este caso es while.
    //Tu condicion es que el valor num2 sea diferente de 0.
    //Si es verdadera la condicion realizara el codigo dentro de las llaves, 
    //si es falso no ingresara dentro del while.
    //En este caso como no haz inicializado la variable num2, su valor por
    //defecto es 0 por lo que (0(num2) es diferente de 0), es falso y no entraria

    //en este bucle.

    while(num2 != 0) { 
        r = num1 % num2; 
        num1 = num2; 
        num2 = r; 
    } 

Для того, чтобы ты увидел Ваше функционирование, реализуй следующее:

num1 = 12;
num2 = 5;
while(num2 != 0) { 
    r = num1 % num2; 
    num1 = num2; 
    num2 = r; 
} 

Наблюдай следующую ссылку: http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=625:while-y-do-while-en-java-ciclos-o-bucles-ejemplo-break-salir-de-un-bucle-ejercicios-resueltos-cu00659b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

3
ответ дан 03.12.2019, 17:39