无法编译最大公约数的代码?

时间:2012-12-03 03:15:05

标签: java eclipse greatest-common-divisor

我无法编译代码,特别是在我称之为“gcd();”的主程序中我应该把什么放在括号里?谢谢。

import java.util.Scanner;

public class gcd {

    public static void main(String[] args) {
        gcd();
    }

    public static int gcd(int a, int b) {
        Scanner console = new Scanner(System.in);
        System.out.println("Please enter the number 1 & 2: ");
        a = console.nextInt();
        b = console.nextInt();
        if (b == 0) 
            return a;
        else return (gcd (b, a % b));
    }
}

3 个答案:

答案 0 :(得分:4)

您的gcd方法需要两个整数参数,因此gcd()将无法编译。我认为你应该在这里做的是分离IO和计算 - 可能将IO移动到主方法:

public static void main(String[] args) {
    Scanner console = new Scanner(System.in);
    System.out.println("Please enter the number 1 & 2: ");
    int a = console.nextInt();
    int b = console.nextInt();
    System.out.println(gcd(a, b));  // notice the two int arguments
}

public static int gcd(int a, int b) {  // no IO, only gcd calculation
    if (b == 0) 
        return a;
    else return (gcd(b, a % b));
}

将程序分成“逻辑”组件通常很好。在上面的内容中,main方法处理IO,gcd处理实际计算。

答案 1 :(得分:2)

括号允许您将数据传递给方法。在这种情况下,您将两个int传递给gdcab)。

定义方法时,括号之间和public static int gcd之后的部分是告诉方法应该将哪些变量传递给它的地方。

答案 2 :(得分:2)

因为gcd方法有两个整数值,它接收(a和b),你应​​该通过传递两个整数值来调用该方法。

例如:gcd(3, 5);
或者您可以传递两个int类型的变量。