无法从静态上下文引用java非静态变量x
原谅我的无知。我是初学者:
为什么下面的代码给了我下面的编译错误? [line:16]无法从静态上下文引用非静态变量x
public class average{
int [] numbers = {2,3,4,5,6};
double x = averageMark(numbers);
public static double averageMark(int [] numbers){
int sum = 0;
double average = 0.000;
for (int i = 0; i < numbers.length; i++){
sum = numbers [i] + sum;
average = sum/numbers.length;
}
return average;
}
public static void main (String [] args){
System.out.println(x);
}
}
# 1 楼答案
错误说明了一切
您必须使其成为
x
静态变量或者创建一个Average实例并访问它
顺便说一句,这是一个惯例,你的类名应该以大写字母开头
正如@mgaert所指出的,您还需要使数字数组成为静态的,因为您在静态方法中使用它
# 2 楼答案
静态方法或变量不附加到特定对象,而是作为一个整体附加到类。它们是在类加载时分配的。如果您试图从静态方法内部使用实例变量,编译器会认为,“我不知道您在谈论哪个对象的实例变量!” 但是,如果您要创建
average
类的新实例,则可以通过此实例访问它,因此请按如下方式修改它: