2015-03-08 85 views
0

我是Java新手/一般编程 我必须编写一个递归方法来查找两个数字的最大公约数。它说我打电话给方法时找不到符号。无法找到符号(调用方法)

import java.util.Scanner; 
public class tester121{ 
    public static void main(String[]args){ 
     Scanner input= new Scanner(System.in); 
     System.out.println("Enter first number"); 
     int num1=input.nextInt(); 
     System.out.println("Enter second number"); 
     int num2=input.nextInt(); 
     System.out.println("The Greatest common factor of "+num1+" "+num2+" is "+GCD(num1,num2)); 


    } 
} 

和我的方法如下。当我尝试编译此我得到这个GCD.java:4:错误:类,接口,或枚举预期

public class GCD{ 
public static int GCD(int num1, int num2){ 
    if(num2==0){ 
    return num1; 
    } 
    return(GCD(num2, num1%num2)); 

} 
} 

谢谢!

+0

我更改了GCD类的名称 – Ryan206 2015-03-08 17:12:08

+2

您在哪里定义此类? – Makoto 2015-03-08 17:12:09

+0

第二课? – Ryan206 2015-03-08 17:12:39

回答

1

GCDGCD的方法,而非当前类,所以你需要

System.out.println("The Greatest common factor of " + num1 + " " + num2 
     + " is " + GCD.GCD(num1, num2)); 

GCD类本身需要在一个单独的文件就被宣布public

按照惯例注Java中的方法名称以lowercase letter开头,例如gcd

+0

以小写字母“(按惯例)” – Steve 2015-03-08 17:14:19

0

程序中有多个错误。首先GCD是一个类,而不是一个方法,所以在你的主,

System.out.println("The Greatest common factor of "+num1+" "+num2+" is "+GCD(num1,num2)); 

这是试图调用一个“类”,并尝试与一些参数,这是错误的喂养它。由于GCD方法是一种静态方法,因此可以执行GCD.GCD(...,...),但大多数情况下方法名称与类名称相同,因此应该为构造方法保留,因此您希望找到不同的名称该方法

+0

名称* *为*。Java不会突然将具有返回值的方法误认为构造函数。 – Makoto 2015-03-08 17:14:49

+0

@Makoto我不是说这是造成编译错误,而是说不应该这样做 – Steve 2015-03-08 17:15:38

+0

我认为它没有任何语法错误。它违反了惯例,但这真的是违反了。 – Makoto 2015-03-08 17:16:22

1

两种方式修复您的代码,并得到你想要的东西:

1在一个类(称为tester121.java)一切)

import java.util.Scanner; 
public class tester121{ 
    public static void main(String[]args){ 
     Scanner input= new Scanner(System.in); 
     System.out.println("Enter first number"); 
     int num1=input.nextInt(); 
     System.out.println("Enter second number"); 
     int num2=input.nextInt(); 
     System.out.println("The Greatest common factor of "+num1+" "+num2+" is "+GCD(num1,num2)); 
    } 
public static int GCD(int num1, int num2){ 
    if(num2==0){ 
    return num1; 
    } 
    return(GCD(num2, num1%num2)); 
} 
} 

把这段代码放在一个名为tester121.java的文件中,然后你应该编译它。

2)在两个独立的类一切: 第一类: (此保存为GCD.java)

public class GCD{ 
public static int GCD(int num1, int num2){ 
    if(num2==0){ 
    return num1; 
    } 
    return(GCD(num2, num1%num2)); 

} 
} 

二等(此保存为tester121.java)

import java.util.Scanner; 
public class tester121{ 
    public static void main(String[]args){ 
     Scanner input= new Scanner(System.in); 
     System.out.println("Enter first number"); 
     int num1=input.nextInt(); 
     System.out.println("Enter second number"); 
     int num2=input.nextInt(); 
     System.out.println("The Greatest common factor of "+num1+" "+num2+" is "+GCD.GCD(num1,num2)); 


    } 
} 

在第二种情况下,您需要请拨打电话GCD.GCD(num1,num2)),因为该方法声明为静态

相关问题