当我尝试构建此程序时,总会出现“从静态上下文引用的非静态方法”这样的错误 我认为因为我可以在“main”中使用“addto”功能。那么我该如何解决这个问题呢?我需要一个公共arraylist因为我必须在“addto”中进行计算
THX!
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
}
}
答案 0 :(得分:4)
您需要在main函数中实例化一个Calculation对象,以便使用Calculation的非静态方法。
非静态方法仅作为对象的成员“存在”(您可以将其视为类的实例)。为了完成这项工作,你需要写:
System.out.println(new Calculation().addto(3, 5))
答案 1 :(得分: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
修饰符,但是您需要将cal
设置为静态,以便addto
可以使用它。不好主意。)
行。那么编译方法实际上说的是addto
被声明为实例方法...但是你试图在不说使用哪个实例的情况下调用它。实际上,您试图将其称为静态方法。
“修复”(见上文)是创建一个实例并在其上调用方法。