2012-04-05 12 views
1

Dies ist ein Moprogramminglab-Problem. Ich habe ein Array (a2d) und ich muss feststellen, ob jede Zeile und Spalte die gleiche Anzahl von Elementen wie jede andere Zeile und Spalte hat. Wenn es dann ist, setze ich den booleschen isSquare auf wahr.Java 2d Array, Test für Quadrat

Ich habe den folgenden Code, aber es mag es nicht und es gibt mir keine Vorschläge, wie man es verbessert.

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

Teste ich das falsch oder gibt es einen besseren Weg?

Dank

Antwort

5

Es besteht keine Notwendigkeit für zwei Schleifen sollten Sie in der Lage sein, so etwas zu tun (ich bin nicht da es Hausaufgaben, den Code geben gehen)

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

siehe meinen Code oben für die Implementierung. –

+2

Danke an alle für die Hilfe. Ich bevorzuge diese Art der Antwort. –

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

Wenn das letzte Element passiert dies immer wahr zurück. Versuchen Sie folgendes:

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

Es ist nicht notwendig, jede Spalte zu durchlaufen, es ändert nicht die if-Anweisung – twain249

+0

Ich denke, das war das Hauptproblem, es wurde wahr, wenn nicht alle Elemente bestanden. –

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

Sie müssen nur sicherstellen, dass alle Längen der Arrays der 2. Dimension die gleiche Länge wie das Array der ersten Dimension haben.

+0

Dies ist die richtige Antwort (so ist die akzeptierte Antwort von twain249). Ich kann nicht verstehen, wer und warum dieses abgelehnt hat. – Male