返回2D数组中的行数?
返回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日
所以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数组,因为内存按行排列连续地存储,因此按列逐个进行意味着你要跳过一些段的内存然后回来,而不是连续地进行;阅读有关汇编器和编译器的更多信息。