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;

2 次元配列の長さがすべて 1 次元配列と同じ長さであることを確認する必要があります。

于 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 に答える