2016-03-04 35 views
0

我得到幾個「錯位結構」錯誤和「刪除令牌」錯誤。在Oracle網站上對這些錯誤的描述非常含糊。我無法弄清楚問題出在哪裏,但似乎有一個不完整的方括號將整個程序關閉。任何人都可以看到我在做什麼錯了嗎?錯位的結構

public class divisorCalc2 { 
    import java.util.Scanner; //Imports scanner class 

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

    public static void main(String[] args) { 
     System.out.println("Please enter first integer:"); 
     int firstInt = in.nextInt(); 

     System.out.println("Please enter second integer:"); 
     int secondInt = in.nextInt(); 

     System.out.println(gcd(firstInt,secondInt)); 

     in.close(); //Closes Scanner 
    } 
} 
+0

你不能在方法中定義方法,除非你有一個內部類 – Ramanlfc

+1

導入不能在類中定義。先放入包,然後列出導入,然後在下面定義類。投票結束爲一個錯字。 –

+0

嗯,現在'in'是未定義的,您在導入它後不會在任何地方使用'Scanner'。這兩個事實是否有關聯? –

回答

2

你不能在另一個裏面有一個方法。把整個gcd代碼放在main之外。

main (...){ 
    ... 
} 

gcd (...){ 
    ... 
} 
+0

介意OP改變了他對這部分的疑問。 – Tom

+0

明白了,謝謝! –

0

你內的另一個方法,將其移動之外主要方法,你沒有一臺掃描儀宣佈過,你導入的掃描儀類,但還沒有確定。

這裏:

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

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     System.out.println("Please enter first integer:"); 
     int firstInt = input.nextInt(); 

     System.out.println("Please enter second integer:"); 
     int secondInt = input.nextInt(); 

     System.out.println(gcd(firstInt, secondInt)); 

     input.close(); //Closes Scanner 
    } 
0

在一個類的定義,包聲明是第一行,任何進口(s)爲第二行。接下來是'公共課...'。你的程序本身就是失敗的。以上的import語句,在包之後立即執行。