我有一个私有的int数组,我需要以某种方式找到长度,但我不能在静态类下执行此操作。我必须保持类静态,是否可以添加另一种方法来将a.length更改为其他方法?
问题是由a.length引起的。
private int [] a;
public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
for(int i=0; i<a.length; i++) {
if (otherSet.isSet(i))
nextSet.insertElement(i);
}
return nextSet;
}
答案 0 :(得分:1)
正如我所说的那样使用
public int lenghtOfArray(){
return this.a.lenght;
}
并将您的方法更改为
public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
for(int i=0; i<otherSet.length(); i++) {
if (otherSet.isSet(i))
nextSet.insertElement(i);
}
return nextSet;
}
答案 1 :(得分:0)
也可以使a
为静态,或者将您的类的实例作为参数传递给union
方法,并访问该实例的a
字段。
答案 2 :(得分:0)
您需要引用对象的字段:
private int [] a;
public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
. . .
for(int i=0; i<otherSet.a.length; i++) {
. . .
}
}
答案 3 :(得分:0)
您不是指静态类中的a.length
;你是从静态方法做的。静态方法永远不能引用非静态成员变量。
看起来好像你有一个bug。你为什么反对a.length
?您应该询问a
或otherSet
的{{1}}成员。