2012-12-04 50 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

相關問題