0

当我尝试构建这个程序时,总是会出现“从静态上下文引用的非静态方法”之类的错误,我认为这是因为我可以在“main”中使用“addto”函数。那么我该如何解决这个问题呢?我需要一个公共数组列表,因为我必须在“addto”中进行计算

谢谢!

public class Calculation {  
    ArrayList<int[]> cal = new ArrayList<>();

    public static void main(String[] args) {
    System.out.println(addto(3,5));
    }

    String addto(int figone, int figtwo){
     ........do the calculations by using arraylist cal
    }
 }
4

2 回答 2

4

您需要在 main 函数中实例化一个 Calculation 对象才能使用 Calculation 的非静态方法。

非静态方法仅作为对象的成员“存在”(您可以将其视为类的实例)。为了完成这项工作,您需要编写:

System.out.println(new Calculation().addto(3, 5))
于 2012-11-19T03:44:45.547 回答
1

真的很简单吗?

System.out.println(new Calculation().addto(3,5));

或者

Calculation calculation = new Calculation();
System.out.println(calculation.addto(3,5));
// and use 'calculation' some more ...

(您也可以static在方法声明中添加一个修饰符addto,但是您也需要将其设为calstatic 以便addto可以使用它。坏主意。)


好的。所以编译方法实际上是在说它被addto声明为实例方法......但是你试图调用它而不说要使用哪个实例。实际上,您正在尝试将其称为静态方法。

“修复”(见上文)是创建一个实例并在其上调用方法。

于 2012-11-19T03:45:24.627 回答