赋值的左侧必须是变量

时间:2014-03-05 18:16:53

标签: java

private static int setGCD()
    {
    int a, b;

    gCD(a,0) = a; //here -the left-hand side of the assignment must be a variable//
    gCD(a,b) = gCD(b,a%b); //here -the left-hand side of the assignment must be a variable//
    finalNumer = enterNumer/gCD; //here -cannot make static reference to finalNumer, enterNumer, or gCD//
    finalDenom = enterDenom/gCD;//here -cannot make static reference to finalDenom, enterDenom, gCD
  }

此方法的目的是找到用户在上述编程中输入的分子和分母的最大公分母(GCD)。但我一直得到所述的错误(在评论中),这让我感到困惑,因为这是我的老师在董事会上写的方式,但这对我来说完全没有意义!请帮忙!

2 个答案:

答案 0 :(得分:0)

此函数返回您要查找的内容,然后您可以使用其输出在任何您喜欢的地方设置gcd:

public static int gcd(int a, int b)
{
    while (a != b)
    {
        if (a > b)
        {
            a = a - b;
        }
        else
        {
            b = b - a;
        }
    }
    return a;
}

请参阅Euclidean Algorithm上的wiki文章。

答案 1 :(得分:0)

Euclidean algorithm有两种实现:

  • 迭代 (伪代码)
function gcd(a, b)
    while a ≠ b
        if a > b
           a := a − b
        else
           b := b − a
    return a
  • 递归 (伪代码)
function gcd(a, b)
    if b = 0
       return a
    else
       return gcd(b, a mod b)

我相信你想要后者,根据你所写的内容:

public static int gcd(int a, int b) {
    if (b == 0)
        return a;
    else
        return gcd(b, a % b);
}

很容易将伪代码转换为适当的Java。