【发布时间】:2017-12-31 02:57:18
【问题描述】:
简单的代码,计算给定数组中的数字 n,但我得到一个错误,告诉我将我的实例变量更改为静态。
public class Test{
int []arr = {4, 21, 4};
Counter c = new Counter();
public static void main(String[] args) {
System.out.println(c.counter(4, arr));
}
}
public class Counter {
public int counter(int n, int []ar){ //tried to change method to static - didn't help
int counter = 0;
for(int i = 0; i < ar.length; i++){
if(n == ar[i]){
counter++;
}
}
return counter;
}
}
第7行出现错误:将int [] arr和Counter c改为static。
试图使计数器方法静态,但它仍然告诉我将我的数组更改为静态。是什么原因?
【问题讨论】:
-
第 3 行和第 4 行的变量
arr和c需要分别为static。方法counter(int, int[])与此无关。 -
您引用的数组
arr是一个实例变量,但public static void main()处于静态上下文中(正如static在签名中已经声明的那样) -
否则需要移动到main方法中。
-
也许可以阅读本指南,了解静态与非静态 beginnersbook.com/2013/05/static-vs-non-static-methods
-
静态方法只使用类的静态成员。您不能在静态方法中使用类的非静态成员。您必须将它们设为静态或创建 Test 类对象才能使用它们。
标签: java instance-variables class-variables