2015-03-08 82 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)),因爲該方法聲明爲靜態

相關問題