2017-03-11 42 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环境中工作正常

相关问题