2012-10-19 140 views
1

好吧,這是一個猜測一個非常簡單的問題,我正在關於......但它正在殺死我的頭。 這裏是源:設置一個數組變量被傳遞給一個函數

import java.util.Arrays; 
public class InputValues { 
    public int[] myarrayvar; 
    public InputValues(int[] myarraypass) {  
    ---- help here 
    } 
    public void init() {   
    ---help here 
    } 
    public int[] getmyarrayvar() { 
     return myarrayvar; 
    } 
    public void setmyarrayvar(int[] myarraypass) { 
     this.myarrayvar= mayarraypass; 
    } 
} 

我所說的這個具有

InputValues inputValues = new InputValues(myarraypass); 
inputValues.init(); 

myarraypass是int []類型的。

就像我說的,這應該是很容易的....但我不能讓它出於某種原因....

+0

在何種意義上,你不能得到它的工作?你遇到了什麼問題? –

回答

1
  1. 如果您myarrayvar是公共那麼爲什麼你需要一個setter和getter。只有當你的成員無法進入外部世界時,你才需要它們,即它被標記爲私人。
  2. 鳥巢,您可以使用您的構造函數用於設置陣列下面,
public InputValues(int[] myarraypass) { 

    this.myarrayvar = new int[myarraypass.length];  

    System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length); 

} 
+0

哇,工作....謝謝.. – Thevagabond

1

你可以試試下面的事情:

  1. 變化實例變量從public訪問到private

  2. 在構造函數中,你可以使用以下行:

    this.myarrayvar = myarraypass;

但要記住,如果myarraypass被外界InputValues類修改,myarrayvar也將受到影響。

如果您不希望發生該行爲,則應複製索引。

this.myarrayvar = new int[myarraypass.length]; 
for(int i=0; i<myarraypass.length;i++) 
    this.myarrayvar[i] = myarraypass[i]; 

OR

this.myarrayvar = (int[]) myarraypass.clone(); 

OR

this.myarrayvar = new int[myarraypass.length]; 
System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length); 
+0

我做了1.並在setter中插入了一個打印cmd ......但是從來沒有打印過......所以我猜它永遠不會被調用,並且我使用該數組稍後再執行calc並返回一個NullPointerException。由於某些原因var沒有設置。 – Thevagabond

+0

你可以發佈堆棧跟蹤嗎? – Azodious

+0

得到它的工作..我放置源出口的方式......現在正常工作,我做到了這一點.. :-)謝謝 – Thevagabond

相關問題