java - 将二维数组从一种方法传递到另一种方法

标签 java arrays parameters

编程语言: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/

相关文章:

java - 在简单子(monad)类之间复制的简单方法

java - java中是否有一个标准的方法来处理鼠标事件的许多不同选项?

javascript - Jquery Array - 如何将多个索引初始化压缩为一行代码

java - 如果我尝试将数组作为参数传递到不同的公共(public)类中,为什么我的构造函数无法在 Java 中编译?

c++ - 如何使用数组进行两次循环移位

css - 我们可以参数化 CSS 样式吗?

java - URL 内参数和 ForwardResolution 映射

java - 关于 Java 新手的递归

c - 如何在 C 中打印函数参数?

JavaFX:使用音频的 URL 源