[英]Passing a 2d array from one method to another
編程語言:Java
編輯:Vim
我一直試圖做一個包含二維數組的任務。 我一直在努力,因為這是我第二次使用任何類型的陣列。 無論如何,我只是提出了一些問題,希望有人可以幫我解決。
1)這是你如何將雙數組傳遞給另一個方法?
這是我的布爾數組:
boolean[][] TempGrid = new boolean[GRIDSIZE][GRIDSIZE];
這就是我試圖傳遞它的方式。
countNeighbors(TempGrid[][]);
這是接受數組的方法:
public static int countNeighbors ( final boolean[][] grid, final int row, final int col )
但是,當我編譯時,我得到一個錯誤說:
error: '.class' expected
countNeighbors(TempGrid[][]);
^
1 error
我對.class錯誤進行了一些研究,如:
- http://www.dreamincode.net/forums/topic/70299-class-expected-error/
- http://stackoverflow.com/questions/12309220/class-error-in-java-applet
- http://www.daniweb.com/software-development/java/threads/213357/pass-2-dimensional-array-into-method
和其他各種網站/論壇。 他們提出的解決方案要么不起作用,要么導致我的程序出現更多問題。
順便說一下這是整個方法:
public static void genNextGrid ( boolean[][] grid )
{
boolean[][] TempGrid = new boolean[GRIDSIZE][GRIDSIZE];
TempGrid[GRIDSIZE][GRIDSIZE] = grid[GRIDSIZE][GRIDSIZE];
countNeighbors(TempGrid);
for(int row = 1; row < 18; row++)
{
countNeighbors(row);
for(int col = 1; col < 18; col++)
{
countNeighbors(col);
if(n == 3)
{
TempGrid[row][col] = true;
}
else if(n == 2 || n == 3)
TempGrid[row][col] = true;
}
else
{
TempGrid[row][col] = false;
}
}
}
}
我試圖從countNeighbors(TempGrid[][]);
中刪除[][]
countNeighbors(TempGrid[][]);
所以它看起來像:
countNeighbors(TempGrid);
但給了我3個錯誤
error: method countNeighbors in class Life cannot be applied to given types;
countNeighbors(TempGrid);
^
required: boolean[][],int,int
found: boolean[][]
reason: actual and formal argument lists differ in length
error: method countNeighbors in class Life cannot be applied to given types;
countNeighbors(row);
^
required: boolean[][],int,int
found: int
reason: actual and formal argument lists differ in length
error: method countNeighbors in class Life cannot be applied to given types;
countNeighbors(col);
^
required: boolean[][],int,int
found: int
reason: actual and formal argument lists differ in length
- 提前謝謝你的幫助
是的,第二種方式是正確的方式,即
countNeighbors(TempGrid);
而后來的錯誤是說你所需的參數數量不匹配,如
public static int countNeighbors ( final boolean[][] grid, final int row, final int col )
countNeighbors
方法需要3個參數,您只是傳遞1.驗證您需要傳遞給此方法的內容,或者在不需要時刪除它們。 它還返回一個int
,你需要將它分配給某些東西以供進一步使用。 我設想它是變量n
,你打算用它。
你需要在最里面的循環中調用方法
for(int row = 1; row < 18; row++) {
for(int col = 1; col < 18; col++) {
n = countNeighbors(TempGrid,row,col);
...
}
}
聲明變量時只需要[] []。 之后只使用名稱(即TempGrid)
因此,如果您的方法采用2D數組並命名為foo,則: foo(TempGrid)
將對foo(TempGrid)
的引用傳遞給foo。
在Java中,所有都是對象,因此必須在類中聲明您的方法。
恕我直言你的方法應該是這樣的:
public static void genNextGrid ( boolean[][] grid )
{
boolean[][] TempGrid = new boolean[GRIDSIZE][GRIDSIZE];
TempGrid = grid;
for(int row = 1; row < 18; row++)
{
for(int col = 1; col < 18; col++)
{
int n = countNeighbors(TempGrid, row, col);
if(n == 3)
{
TempGrid[row][col] = true;
}
else if(n == 2 || n == 3)
TempGrid[row][col] = true;
else
{
TempGrid[row][col] = false;
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.