Java 返回二维数组中的行数?

Java 返回二维数组中的行数?,java,arrays,Java,Arrays,我有一个2d阵列: private boolean[][] landscape; 此景观阵列使用其[行]和[列]定义池塘 方法,public int getRows(),需要返回横向数组中的行数 我尝试了返回scape.length但这不起作用。还有几件事我尝试了但没有成功: int count = 0; for (boolean[] i : landscape){ count += i.length; }

我有一个2d阵列:

private boolean[][] landscape;
此景观阵列使用其[行]和[列]定义池塘

方法,
public int getRows()
,需要返回横向数组中的行数

我尝试了
返回scape.length但这不起作用。还有几件事我尝试了但没有成功:

        int count = 0;
        for (boolean[] i : landscape){
            count += i.length;


        }
        return count;

int count=0;
for(int i=0;i

行和列的数量取决于用户选择的内容。至少有5个。那么我该怎么做呢?

如何
返回横向[0]。长度?您可能希望确保
横向[0]
处的数组元素已经初始化,但听起来没问题


请看,因为(我假设)您正在初始化为
scape[rows][cols]
,请求
scape.length
获取
cols
的数量-它从外到内工作。您需要更深入。

让我们从一些定义开始:

假设一个
3 x 4
矩形数组有3列4行,表示为:

boolean landscape[][] = new boolean[3][4];
要获取行数和列数,请执行以下操作:

int nosRows = landscape[0].length;  // 4
int nosCols = landscape.length;     // 3
int rows = matrix.length;
int cols = matrix[0].length;
如果您认为我的术语中有错误的行和列,请在心里对它们进行重命名。在Java代码中,没有关于哪个维度表示列,哪个维度表示行的通用约定

如果你希望得到3或4以外的答案,你需要解释一下你在说什么


显然,这只适用于方形或矩形阵列。

您的代码应该可以工作

int count=0;
for(int i=0;i
您可以将代码发布到如何填充2D数组中吗

这是我做的一个项目,它计算了我的2D数组中的行和元素

    double[][] array = {{1,2,3,3,3,3},{3,4,5,8,9},{8,9,1}};

    // counter to count the amount of elements in the 2d array
    double elements = 0;  // 14 elements in array above 1,2,3,3,3,3,3,4,5,8,9,8,9,1

    // counter to count the amount of rows.
    double rows = 0;   // 3 rows in the array above. {}{}{}

    // loop through rows
    for (int i = 0; i < array.length; i++) {
        rows++;
        // loop through columns
        for (int j = 0; j < array[i].length; j++) {
            elements++;
        }
    }
double[][]数组={{1,2,3,3,3},{3,4,5,8,9},{8,9,1};
//计数器以计算二维数组中的元素数量
双元素=0;//数组中1,2,3,3,3,3,3,4,5,8,9,8,9,1以上的14个元素
//计数器来计算行数。
双行=0;//上面的数组中有3行。{}{}{}
//循环行
for(int i=0;i
所以2D数组实际上就是数组的数组。如果我有一个5行4列的2D数组,你可以把它想象成一个包含5个子数组的数组,每个子数组有4个点

boolean landscape[][] = new boolean[5][4];

int numRows = landscape.length;
int numCols = landscape[0].length;

System.out.println("Number of rows: " + numRows);
System.out.println("Number of cols: " + numCols);

for (int i = 0; i < numRows; i++) {
    for (int j = 0; j < numCols; j++) {
        System.out.print(landscape[i][j]);
    }
    System.out.println("");
}

需要注意的是,java被认为是行主要的(行总是排在第一位):这很重要,因为如果您先迭代列(列0:行0,行1,行2,行3,行4;列1:行0,行1,等等),实际上您是在低效地遍历2D数组,因为内存是逐行连续存储的,所以一列一列地做意味着跳过内存段,然后返回,而不是连续地返回;阅读有关汇编程序和编译器的更多信息。

Stephen,根据一般惯例,您的代码有一个小错误。根据标准约定,以下内容应为您提供正确的行和列值:

int nosRows = landscape[0].length;  // 4
int nosCols = landscape.length;     // 3
int rows = matrix.length;
int cols = matrix[0].length;

此外,假设您已经填充了数组并检查末尾的行数和列数。

让我们考虑一个矩阵:

                  0 1 0
                  1 0 1
                  1 0 0
                  0 0 1
在java中,我们可以将该矩阵表示为4行3列的2D数组。
初始化:

int[][] matrix=new int[4][3];
在java中,2D数组不完全是行主数组,而是数组的数组。 但为了回答您的问题并以更简单的方式解释您,我们可以将此视为一种主要安排

为了让事情更清楚,
matrix[1]
指向索引1处的一行<代码>矩阵[1]
实际上是一个数组。其长度等于此矩阵中的列数。 因此,
matrix[1]。length
将给出列数。在这里,对于这个示例,所使用的索引在不超出范围之前是不相关的。我们也可以使用0作为索引

要获得行数,我们需要获得数组变量length的值,该变量给出行数

实质上,

int row = matrix.length;    //4 for above example
int col = matrix[0].length; //3 for above example

我希望,我能够回答你的问题。

只需使用下面的代码即可获得矩阵中的行和列,而无需运行任何循环

  int rows = M.length;
  int columns = M[0].length;

这将是一列的长度。哦,好吧,在这种情况下,您需要更详细地描述您的问题,最好使用“不起作用”的确切定义。
返回横向。长度应该起作用,因为二维数组只不过是数组的数组。你说的“没用”是什么意思?请详细说明你想要什么。你的意思是“行数”还是“元素数”?请提供本标准惯例的支持证据。例如,参考Java样式指南或(Oracle)Java教程。(事实是>>你
  int rows = M.length;
  int columns = M[0].length;