返回2D数组中的行数?

7 浏览
0 Comments

返回2D数组中的行数?

我有一个二维数组:

private boolean[][] landscape;

这个景观数组定义了一个池塘,其行和列为 [rows] 和 [cols]

方法 public int getRows() 需要返回景观数组中行的数量

我尝试了 return landscape.length;,但并没有起作用。我尝试了几个其他的方法但都没有成功:

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

还有

       int count = 0;
        for (int i = 0; i < landscape.length; i++) {
                if (landscape[i] != null){
                    count ++;
            }
        }
        return count;

行数和列数取决于用户选择的数量,但我相信最少为5。那么我该怎么做呢?

admin 更改状态以发布 2023年5月21日
0
0 Comments

所以2D数组实际上只是数组的数组。因此,如果我有一个具有5行和4列的2D数组,你可以将其视为包含有4个位置的5个子数组的数组。

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("");
}

输出:

Number of rows: 5
Number of cols: 4
0000
0000
0000
0000
0000

重要的是要注意Java被认为是按行主导的(行总是先出现):在2D数组中,行或列哪个先出现?这很重要,因为如果你首先迭代列(列0:行0,行1,行2,行3,行4;列1:行0,行1等),你实际上在低效地遍历2D数组,因为内存按行排列连续地存储,因此按列逐个进行意味着你要跳过一些段的内存然后回来,而不是连续地进行;阅读有关汇编器和编译器的更多信息。

0
0 Comments

让我们从一些定义开始:

假设一个3×4的矩形数组有3列和4行,并表示为:

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

要获取行和列的数量:

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

如果您认为我在术语上搞错了行和列,请在头脑中重命名它们。在Java代码中,哪个维度表示列,哪个表示行并没有通用的惯例。

如果您期望得到3或4以外的答案,您需要解释一下您所谈论的内容。


显然,这仅适用于正方形或矩形数组。

0