2012-04-05 21 views
1

これはプログラミング上の問題です。 配列(a2d)が与えられ、すべての行と列が他のすべての行と列と同じ数の要素を持つかどうかを判断する必要があります。そうであれば、boolean isSquareをtrueに設定します。Java 2d配列、正方形のテスト

私は次のコードを思いついたが、それは好きではないし、改善方法について私には何の示唆も与えていない。

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; 
} 

私はこれを間違った方法でテストしていますか、より良い方法がありますか?

おかげ

答えて

5

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 
+0

実装のための私のコードを参照してください。 –

+2

誰もが助けてくれてありがとう。私はこの答えのスタイルを好みました。 –

0
if(a2d.length == a2d[row].length) 
    isSquare = true; 
else 
    isSquare = false; 

最後の要素は、これは常にtrueを返します合格した場合。これを試してください:あなたはこのような何かを行うことができるはず2つのループの必要はありません

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; 
} 
+1

if文を変更しないすべての列をループする必要はありません – twain249

+0

私はこれが主な問題だと思っています。 –

1
for (int i = 0, l = a2d.length; i < l; i++) { 
    if (a2d[i].length != l) { 
    return false; 
    } 
} 
return true; 

(私はそれの宿題ので、コードを与えるつもりはありません) 2次元配列のすべての長さが1次元配列と同じ長さになるようにするだけです。

+0

これは正解です(twain249の回答も同様です)。私は誰が、なぜこれを投票したのか理解できません。 – Male