2014-02-20 167 views
1
public class SumLineTester { 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     SumLine test = new SumLine("5 8 3 2 1"); 
     System.out.println(test.getSum()); 
    } 
} 


import java.util.Scanner; 

public class SumLine { 
    private String line; 

    public SumLine(String s) { 
     line = s; 
    } 

    public int getSum(){ 
     int sum = 0; 
     Scanner chop = new Scanner(line); 

     while(chop.hasNextInt()){ 
      sum= sum + chop.nextInt(); 
     } 
     return sum; 

    public String getLine(){ 
     return s; 
    } 

    public String toString(){ 
     return line; 
    } 
} 
} 

導入上面的代碼的第一部分是我的測試器類,它包含我的主要方法。其餘的是我試圖從測試儀上運行的代碼,並且一直收到此錯誤:語法錯誤,插入「EnumBody」來完成BlockStatement

Syntax error, insert "EnumBody" to complete BlockStatement 

at SumLine.getSum(SumLine.java:17) 
at SumLineTester.main(SumLineTester.java:10) 

如何修復該錯誤?

+1

檢查你的大括號。你不能在方法中聲明方法。 –

回答

3

你缺少右括號在你的getSum()

public int getSum(){ 
    int sum = 0; 
    Scanner chop = new Scanner(line); 

    while(chop.hasNextInt()){ 
     sum= sum + chop.nextInt(); 
    } 
    return sum; 
^ \\no close brace 

public String getLine(){ 
    return s; 
} 

末這將引發異常,因爲你想宣佈你getSum()方法中一種新的方法,它是不允許的。

只需添加關閉括號中是這樣的:

public int getSum(){ 
    int sum = 0; 
    Scanner chop = new Scanner(line); 

    while(chop.hasNextInt()){ 
     sum= sum + chop.nextInt(); 
    } 
    return sum; 
} 
^ \\close brace added 

public String getLine(){ 
    return s; 
} 

此外,大衛·華萊士在評論中指出,不要忘了在你的類的末尾刪除多餘的花括號。作爲一個側面說明,如果您使用Eclipse之類的IDE,這些錯誤更容易被發現。

+0

當然,你也想刪除文件末尾的殘留大括號。 –

+0

我認爲這可能不用說,但好點:)。謝謝你,並補充說。 – mdewitt

+0

我確實使用Eclipse,但它從未拋出錯誤以刪除括號... –

2

不完全確定爲什麼人們認爲由於某種原因而認爲問題在他們之下或之下是合適的。這是一個完全有效的問題。即使是最有經驗的程序員也會出現語法錯誤。恰巧我在這裏帶領一個類似的錯誤,一個「;」終止導致相同消息的註釋行。

語法錯誤,插入「EnumBody」完成塊語句似乎是默認的錯誤消息是一個語法寫了錯誤,混淆了編譯器嚴重,以至於它不能告訴你試圖做。一旦我明白了這一點,很容易發現,我結束了一條線;我不應該有,如果/當我再次看到這個消息時,我會知道這意味着我做了一個菜鳥語法錯誤,並且不會尋找錯誤類。這樣的解釋有助於這個用戶,如果用戶下面有這樣的答案,請繞過這個問題。 Downvotes是針對錯誤的問題和答案,而不是針對錯誤的問題。

相關問題