2012-12-04 48 views
0

我有一个私人诠释数组,我需要以某种方式找到长度,但我不能在静态类下做到这一点。我必须保持这个类是静态的,是否有另一种方法可以将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; 
       } 

回答

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; 
     } 
0

要么让a静也,或通过你的类的实例作为参数传递给union方法和访问该实例的a场。

0

你需要引用一个对象的字段:

private int [] a; 

public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) { 
    . . . 
    for(int i=0; i<otherSet.a.length; i++) { 
     . . . 
    } 
} 
+0

是的,这是正确的 – user1874549

0

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

它看起来好像你有一个错误。为什么你会违背a.length?您应该询问a成员otherSetnextSet

相关问题