2015-03-03 51 views
1

所以我有一個看起來像這樣的方法:如何在另一種方法中使用一種方法中聲明的變量。

public Maze(String[] textmaze, int startRow, int startCol, int finishRow, int finishCol){ 
    int numRows = textmaze.length; 
    int numCols = textmaze[0].length; 
    int [][] x = new int[numRows][numCols]; 
    } 

所以我想用變量x,numRows行和其他方法數numCols然而numRows行和數numCols需要必須傳過來的參數字符串textmaze而這個方法被調用的主要方法是在另一個我不允許修改的類中。那麼我怎樣才能在其他方法中使用這些變量?

+0

1 - 這不是一個方法,它是一個構造函數; 2-在那種情況下,你有沒有想過爲他們提供獲得者......? – MadProgrammer 2015-03-03 00:39:59

+0

我從來沒有在java中使用這樣的構造函數,我也不知道getter是什麼。 – 2015-03-03 00:41:48

+0

getter是一種訪問器方法,它只是一種允許您從對象中「獲取」值的方法。雖然你可能從來沒有寫過,但我確定你已經以某種形式遇到了他們 – MadProgrammer 2015-03-03 00:45:37

回答

1

由於Maze是一個構造函數,您要使用的類的其他部分的變量,你應該做的變量實例字段代替,例如...

private int numRows; 
private int numCols; 
private int [][] x; 

public Maze(String[] textmaze, int startRow, int startCol, int finishRow, int finishCol){ 
    numRows = textmaze.length; 
    numCols = textmaze[0].length; 
    x = new int[numRows][numCols]; 
} 

這將允許你訪問THIS(Maze)類上下文中的變量。

取決於你想做的事,你也可以爲這些字段允許子類訪問它們(使用protected防止包外的其他類訪問它們或public如果希望其他類訪問提供存取他們)......

public int getNumRows() { 
    return numRows; 
} 

看看Understanding Class MembersControlling Access to Members of a Class更多細節

+0

我現在有另一個問題。所以出於某種原因,當我編譯它時,我總是收到一個錯誤,說它找不到符號numCols = textmaze [0] .length;箭頭指向textmaze [0] .length中的點。你知道什麼是錯的嗎? – 2015-03-03 00:47:57

+0

'textmaze'是一維數組,或者參數錯誤或者您正在嘗試做一些無法實現的事情...... – MadProgrammer 2015-03-03 00:49:35

相關問題