-3

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

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(); ^ 必需:int,int 找到:无参数原因:实际参数列表和形式参数列表长度不同 1 错误

4

3 回答 3

4

调用gcd函数时,需要传入两个整数作为参数。在您的情况下,这两个整数可能是您读入的两个整数。因此,它可能看起来像:

gcd = gcd(num1, num2);
于 2013-04-18T15:06:17.937 回答
0

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

调用的一个例子是gcd = gcd(54, 24). 在你的情况下,你可能想要gcd = gcd(num1, num2).

于 2013-04-18T15:06:43.043 回答
0

您正在调用该方法gcd(int, int),但没有在gcd().

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

于 2013-04-18T15:09:05.667 回答