2013-05-03 35 views
1

我正在學習一個類的程序,並且卡住了。當我嘗試編譯下面的代碼時,我收到和變量未找到錯誤。請幫忙!給同一類中的另一個方法發送引用的建議

public class RingBuffer 
{ 
    public RingBuffer(int capacity){ 
     double[] EmptyBuffer = new double[capacity]; 
     System.out.print(EmptyBuffer.length); 

    } 

    public int size(){ 
     int size = EmptyBuffer.length; 
     return size; 
    } 

請注意,我收到一個錯誤,size()方法無法找到變量EmptyBuffer。

+0

'EmptyBuffer'是您的構造函數的局部變量。一旦構造函數完成,它將超出範圍(它不再存在)。 – andre 2013-05-03 18:36:16

回答

3

你或許應該做一個字段,又名一個實例變量:

public class RingBuffer 
{ 
    private double[] emptyBuffer; 

    public RingBuffer(int capacity){ 
     emptyBuffer = new double[capacity]; 
     System.out.print(EmptyBuffer.length); 
    } 

    public int size(){ 
     int size = emptyBuffer.length; 
     return size; 
    } 
} 

這將使emptyBuffer在整個班級都可以使用,即以任何其他方法。

+0

謝謝,這解決了我所有的問題! – 2013-05-03 18:42:56

+0

通過在類聲明中將'emptyBuffer'標記爲'static',我可以更好地保證問題的可靠性。 – 2013-05-03 18:43:04

+0

@SushimMukulDutta然後,你不能在構造函數中指定它...... – MarioDS 2013-05-03 18:44:18

0

的數組作爲參數傳遞給你的size()方法,就像你與capacity完成:

int size(double[] EmptyBuffer){ 
    int size = EmptyBuffer.length; 
    return size; 
} 

然後:

double[] EmptyBuffer = new Double[capacity]; 
int size = size(EmptyBuffer); // make call to size passing the array 
           // as an argument 
System.out.print(size); 
+0

'int size EmptyBuffer(double [] EmptyBuffer)'wtf? – MarioDS 2013-05-03 18:37:39

+0

很好,錯誤輸入。我的錯。 – 2013-05-03 18:38:36

+0

清除了我的downvote,但我仍然認爲你的解決方案使得他使課程變得過時了:)這當然是可能的。 – MarioDS 2013-05-03 18:41:48

相關問題