1

我得到了一个数组(a2d),我需要确定每一行和每一列是否与其他每一行和每一列具有相同数量的元素。如果是,那么我将布尔 isSquare 设置为 true。

我提出了以下代码,但它不喜欢它,也没有给我任何关于如何改进它的建议。

for(int row = 0; row < a2d.length; row++){
for(int col = 0; col < a2d[row].length; col++)
    if(a2d.length == a2d[row].length)
        isSquare = true;
    else
        isSquare = false;
}

我是用错误的方式测试这个还是有更好的方法?

4

3 回答 3

5

不需要 2 个循环,你应该能够做这样的事情(我不会给出代码,因为它是家庭作业)

1. Save the length of the array (a2d.length)
2. Loop over all the rows
3. Check to see if the given row has the same length
4. if Not return false 
5. if you reach the end of the loop return true
于 2012-04-05T01:51:20.503 回答
1
for (int i = 0, l = a2d.length; i < l; i++) {
  if (a2d[i].length != l) {
    return false;
  }
}
return true;

您只需要确保第二维数组的所有长度都与第一维数组的长度相同。

于 2012-04-05T01:51:33.160 回答
0
if(a2d.length == a2d[row].length)
    isSquare = true;
else
    isSquare = false;

如果最后一个元素通过,这将始终返回 true。试试这个:

isSquare = true;
for(int row = 0; row < a2d.length; row++){
for(int col = 0; col < a2d[row].length; col++)
    if(a2d.length != a2d[row].length)
        isSquare = false;
}
于 2012-04-05T01:50:35.760 回答