编程语言:Java
编辑器:Vim
我一直在尝试做一个包含二维数组的作业。我一直在努力解决这个问题,因为这是我第二次使用任何类型的数组。不管怎样,我只是有一些问题,我希望这里有人能为我解答。
1) 这是将 double 组传递给另一个方法的方式吗?
这是我的 boolean 数组:
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);
但给了我 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);
...
}
}
关于java - 将二维数组从一种方法传递到另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814954/