简体   繁体   English

找不到符号(调用方法)

[英]Can't find symbol (calling method)

Im new to Java/programming in general I have to write a recursive method to find the greatest common divisor of two numbers. 在Java /编程方面,我通常是新手,我必须编写一个递归方法来找到两个数字的最大公约数。 It says I can't find the symbol when I call the method. 它说我调用该方法时找不到符号。

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


   } 
}

and my method is below. 而我的方法如下。 when i try to compile this I get this GCD.java:4: error: class, interface, or enum expected 当我尝试编译它时,我得到了这个GCD.java:4:错误:类,接口或预期的枚举

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

}
}

Thanks! 谢谢!

GCD is a method in GCD rather than in the current class so you need GCD是一个方法GCD ,而不是在当前类,所以你需要

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

The GCD class itself needs to be in a separate file for it to be declared public GCD类本身需要在单独的文件中才能声明为public

Note by convention method names in Java start with a lowercase letter eg gcd 注意,按照惯例,Java中的方法名称以小写字母开头,例如gcd

There are two ways to fix your code and get what you want: 两种方法可以修复您的代码并获得所需的内容:

1) Everything in one class (called tester121.java) 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));
}
}

put this code in a file called tester121.java which you should then compile. 将此代码放在一个名为tester121.java的文件中,然后应进行编译。

2) Everything in two separate classes: First class: (save this as GCD.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));

}
}

Second class (save this as tester121.java) 第二类(将其保存为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));


   } 
}

In the second case you need to call GCD.GCD(num1,num2)) because the method is declared to be static 在第二种情况下,您需要调用GCD.GCD(num1,num2))因为该方法被声明为静态的

There are multiple errors in your program. 您的程序中存在多个错误。 First GCD is a class, not a method, so in your main, 首先,GCD是一个类,而不是一个方法,因此在您的主体中,

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

this is trying to call a "class" and try to feed it with some parameters, which is wrong. 这试图调用一个“类”,并尝试使用一些参数来提供它,这是错误的。 Since GCD method is a static method you can do GCD.GCD(..., ...) but most of the time the method name same as the class name should be reserved for constructor method so you would want to find a different name for that method 由于GCD方法是静态方法,因此您可以执行GCD.GCD(...,...),但大多数情况下,应将与类名相同的方法名称保留给构造函数方法,因此您需要查找其他名称对于那种方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM