Return number of rows in 2d array?
我有这个二维数组:
1 | private boolean[][] landscape; |
这个景观数组定义了一个池塘及其[行]和[列]
方法
我刚试过
1 2 3 4 5 6 7 | int count = 0; for (boolean[] i : landscape){ count += i.length; } return count; |
和
1 2 3 4 5 6 7 8 9 10 11 | int count = 0; for (int i = 0; i < landscape.length; i++) { if (landscape[i] != null){ count ++; } } return count; |
行和列的数量取决于用户选择的内容。最少有5个。那么我该怎么做呢?
让我们从一些定义开始:
假设一个
1 | boolean landscape[][] = new boolean[3][4]; |
要获取行数和列数:
1 2 | int nosRows = landscape[0].length; // 4 int nosCols = landscape.length; // 3 |
如果你认为我的行和列混淆了,(在精神上)重命名它们。(对于表示列和行的维度,没有通用的约定。)
如果你期望的答案不是3或4,你需要解释你在说什么。
显然,这只适用于方形和矩形阵列。
所以二维数组实际上只是数组的数组。所以如果我有一个有5行4列的二维数组,你可以把它看作一个包含5个子数组的数组,每个子数组有4个点。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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被认为是行主要(行总是第一个):在2D数组、行或列中最先出现的是什么?这一点很重要,因为如果您首先迭代列(列0:行0、行1、行2、行3、行4;列1:行0、行1等),实际上您会效率低下地遍历二维数组,因为内存是逐行连续存储的,因此逐列执行意味着您将跳过内存段,然后返回,而不是连续进行的;阅读关于汇编程序和编译器的更多信息。
埃多克斯1〔0〕怎么样?您需要确保
你看,因为(我假设)你是在初始化为
让我们考虑一个矩阵:
1 2 3 4 | 0 1 0 1 0 1 1 0 0 0 0 1 |
我们可以将该矩阵表示为具有4行和3列的Java中的2D数组。
初始化:
1 | int[][] matrix=new int[4][3]; |
在爪哇中,2D阵列不完全是行主要的,而是数组的数组。但要回答你的问题并用一种更简单的方式解释你,我们可以把这看作是一个排的主要安排。
为了使事情更清楚,
为了得到行数,我们需要得到数组变量的长度值,该值给出了行数。
本质上,
1 2 | int row = matrix.length; //4 for above example int col = matrix[0].length; //3 for above example |
希望我能回答你的问题。
斯蒂芬,根据一般惯例,你的代码有一点错误。根据标准惯例,下面应该给出行和列的正确值:
1 2 | int rows = matrix.length; int cols = matrix[0].length; |
另外,这假定您已经填充了数组,并且正在检查末尾的行和列的数量。
您的代码应该有效。
1
2
3
4
5
6
7
8
9
10
11 int count = 0;
for (int i = 0; i < landscape.length; i++) {
if (landscape[i] != null){
count ++;
}
}
return count;
你能把你的代码发布到如何填充你的二维数组中吗?
这是我做的一个项目,它计算了二维数组中的行和元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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++; } } |