无法找到符号(调用方法)

时间:2015-03-08 17:08:08

标签: java

我是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));

}
}

谢谢!

3 个答案:

答案 0 :(得分:1)

GCDGCD中的方法,而不是当前类中的方法,因此您需要

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

GCD类本身需要在一个单独的文件中才能声明public

请注意,Java中的约定方法名称以lowercase letter开头,例如gcd

答案 1 :(得分: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)),因为该方法被声明为静态

答案 2 :(得分:0)

您的计划中存在多个错误。第一个GCD是一个类,而不是一个方法,所以在你的主要,

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

这是试图打电话给"班级"并尝试用一些参数来提供它,这是错误的。由于GCD方法是一个静态方法,你可以做GCD.GCD(...,...)但是大多数时候应该为构造函数方法保留与类名相同的方法名,所以你想要找到一个不同的名字对于那个方法