【问题标题】:how to correctly modify integers with while loops如何使用 while 循环正确修改整数
【发布时间】:2017-12-04 06:24:46
【问题描述】:

所以基本上,我只是想从之前的两个数字中返回一个 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 作为答案?几乎每次......想法?

【问题讨论】:

  • 我怀疑您的 GCD 算法已关闭。一方面,您永远不会真正检查您所采取的步骤是否会导致分母将两个数字相除。说到这里,我什至没有在输入中看到两个分子。

标签: java while-loop integer greatest-common-divisor


【解决方案1】:

这是因为您的 while 循环依赖于 Denominator 的值,因为当 Denominator 的值减小到 0 时循环结束。

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

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

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

【讨论】:

  • 有什么想法可以解决这个问题吗?可能回顾一下 while 循环的一次迭代?
【解决方案2】:

您需要在代码中的某处使用 return 语句。大概在方法的最后,需要写return GCD;

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2021-03-25
    • 2013-10-29
    • 1970-01-01
    • 2021-01-19
    相关资源
    最近更新 更多