我似乎找不到这个错误的解决方案..请不要评判我。初学者。
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错误
答案 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)
方法将要求您将两个整数作为输入。