2017-03-11 43 views
-2

我正在通過在線Java課程http://mooc.cs.helsinki.fi/,並偶然發現錯誤。找不到我的方式。NoSuchMethodError void vs int

public class NumberStatistics { 

    private int count; 
    private int sum; 
    public NumberStatistics(){ 
     this.count=0; 
     this.sum=0; 
    } 
    public void addNumber(int number){ 
     this.count++; 
     this.sum+=number; 
    } 
    public int amountOfNumbers(){ 
     return this.count; 
    } 
    public int sum(){ 
     return this.sum; 
    } 
    public double average(){ 
     if(this.count==0||this.sum==0){ 
      return 0; 
     } 
     return (double)this.sum/this.count; 
    } 
} 

這是主文件

public class Main { 
    public static void main(String[] args) { 

     NumberStatistics stats = new NumberStatistics(); 

     stats.addNumber(3); 
     stats.addNumber(5); 
     stats.addNumber(1); 
     stats.addNumber(2); 
     System.out.println("Amount: " + stats.amountOfNumbers()); 
     System.out.println("sum: " + stats.sum()); 
     System.out.println("average: " + stats.average()); 
    } 
} 

當我嘗試運行它,它帶有一個錯誤

Exception in thread "main" java.lang.NoSuchMethodError: NumberStatistics.addNumber(I)I 
at Main.main(Main.java:8) 

如果我改變

public void addNumber 

public int addNumber 

具有返回值。它通過罰款,但不被他們的服務器接受,因爲這種方法必須具有特定的名稱(void)。問題是什麼?我迷路了。

P.S.我已經修好了一點,現在看來工作。沒有改變任何代碼。不知道是什麼導致它失敗......去檢查它。感謝您的輸入。

+2

你不重新編譯你的Main類。如果您使用IDE或構建工具,它將確保需要編譯的所有內容都將重新編譯。 –

+0

我使用NetBeans 8.2 – Aleks

+2

清理你的項目.... –

回答

-1

我只是用你的代碼在我的Java SE環境我得到這個:

金額:4 總和:11 平均:2.75

好吧,我沒有看到任何問題,但你說你正在使用服務器?

此錯誤:

Exception in thread "main" java.lang.NoSuchMethodError: NumberStatistics.addNumber(I)I 

在Main.main(Main.java:8)

據我所知是因爲你的類不到風度有一個方法,所以在我的愚見,我建議你使用你想要的void再次編譯這個類並刷新服務器(重新啓動),你應該看到這個改變,因爲我說它在我的SE環境中工作正常

相關問題