0

我有一个私有 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;
              }
4

4 回答 4

1

As i said use

public int lenghtOfArray(){
      return this.a.lenght;
}

and change your method to

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;
      }
于 2012-12-04T06:09:38.100 回答
0

也可以设为静态,或者a将类的实例作为参数传递给union方法并访问该实例的a字段。

于 2012-12-04T06:07:20.097 回答
0

您需要引用对象的字段:

private int [] a;

public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
    . . .
    for(int i=0; i<otherSet.a.length; i++) {
        . . .
    }
}
于 2012-12-04T06:07:30.250 回答
0

您不是a.length从静态中引用的;你是从静态方法做的。静态方法永远不能引用非静态成员变量。

It appears as if you have a bug there. Why would you go against a.length? You should inquire about the a member of otherSet or nextSet.

于 2012-12-04T06:08:51.410 回答