Java 如何使用while循环正确修改整数

Java 如何使用while循环正确修改整数,java,while-loop,integer,greatest-common-divisor,Java,While Loop,Integer,Greatest Common Divisor,所以基本上,我只是想从前面的两个数字中返回一个GCD public static String GCD( int Denominator,int Numerator) { int newNum=Numerator; int newDen=Denominator; int newWhole=Whole; int GCD=0; if (Numerator == 0) { GCD = Denominator; } while (

所以基本上,我只是想从前面的两个数字中返回一个GCD

public static String GCD( int Denominator,int Numerator) {
    int newNum=Numerator;
    int newDen=Denominator;
    int newWhole=Whole;
    int GCD=0;
    if (Numerator == 0) {
        GCD = Denominator;
    }

    while (Denominator != 0) {
        if (Numerator > Denominator) {
            Numerator = Numerator - Denominator;
        }else {
            Denominator = Denominator - Numerator;
        }
    }
    GCD = Denominator;
    System.out.println(GCD);
}
你可能会认为,既然我在循环外声明了GCD,那么它会很好地返回


但是没有,我只得到0作为答案?几乎每次。。。。。想法

这是因为while循环依赖于
分母的值,因为分母的值减小到0时循环结束

在while循环之外,您将分母的值存储在
'GCD'
中,它显然是'0'

所以无论你在while循环中做什么,你的GCD最终结果都是0


我希望这能解决您的问题。

您需要在代码中的某个地方使用return语句。可能在方法的末尾,您需要编写
返回GCD

我怀疑您的GCD算法已关闭。首先,你从来没有真正检查过你所采取的步骤是否会产生一个分母,将两个数字分开。说到这里,我甚至没有在输入中看到两个分子。你有什么想法来解决这个问题吗?可能回顾一下while循环的一次迭代?