GCD,Euclid算法

时间:2013-04-18 15:04:03

标签: java

我似乎找不到这个错误的解决方案..请不要评判我。初学者。

import java.util.Scanner;
public class GreatestCommonDivisor {

    public static void main(String[] args) {
        Scanner kbd = new Scanner(System.in);
        int num1;
        int num2;
        int gcd;
        boolean again = false;

        do {
            System.out.print("First positive integer: ");
            num1 = inputPosInt();

        System.out.print("Second positive integer: ");          
            num2 = inputPosInt();
            //....
            gcd = gcd();
            (again) = tryAgain();
        } while (again);    {
                System.out.println("Thank you for testing this program.");
        }

    }

   public static int inputPosInt () {
        Scanner kbd = new Scanner(System.in);
         int num;

        num = kbd.nextInt();

        if (num < 0) {
            System.out.println("Entered integer value is non-positive.");
            return 0;
        }
         return num;

    }

    public static int gcd(int num1, int num2) {


     if (num2==0) {
        return num1; 
            }
     return gcd(num2,num1%num2);
}


    public static boolean tryAgain() {
        Scanner kbd = new Scanner(System.in);
        System.out.print("Would you like to try again? [Y/N]");
        char again;
        again = kbd.nextLine().charAt(0);
        if (again == 'y' || again == 'Y') {
            return true;
        }

        else if (again == 'n' || again == 'N') {
            System.exit(0);
        }

        return false;
    }

}

该程序需要2个正整数输入,并使用欧几里德算法求解其GCD。

错误:  gcd = gcd();                   ^   required:int,int   发现:没有争论   原因:实际和正式的参数列表长度不同 1错误

3 个答案:

答案 0 :(得分:4)

当您调用gcd函数时,需要传入两个整数作为参数。在你的情况下,这两个整数可能是你读过的两个。所以,它应该看起来像:

gcd = gcd(num1, num2);

答案 1 :(得分:0)

当你有gcd = gcd();时,你没有传递它所需的参数。您的方法定义为public static int gcd(int num1, int num2),需要两个整数。

调用的示例是gcd = gcd(54, 24)。在您的情况下,您可能需要gcd = gcd(num1, num2)

答案 2 :(得分:0)

您正在调用方法gcd(int, int),但未在gcd()中传递任何参数。

写入的gcd(int, int)方法将要求您将两个整数作为输入。