Prüfen ob ein zweidimensionales Array rechteckig ist

SimonOsiris

Mitglied
Hallo Leute,
Ich versuche gerade folgende Aufgabenstellung zu lösen und komme nicht weiter:

"Erstellen Sie eine statische Methode isRectangular(), die ein zweidimensionales int-Array entgegennimmt und prüft, ob es rechteckig ist. Geben Sie entsprechend true oder false zurück.

Hinweis: Ein rechteckiges Array (oder eine Matrix) ist ein zweidimensionales Array, bei dem alle seine Zeilen die gleiche Anzahl von Elementen haben.

Beachten Sie, dass ein leeres Array rechteckig ist und ein null-Array nicht rechteckig ist."

Mein Code sieht zurzeit so aus:

Java:
class Exercise {
    public static void main(String[] args) {

        int[][] array = {{3, 4, 5}, {3, 4, 5}};

        if (isRectangular(array)) {
            System.out.println("Matrix");
        } else {
            System.out.println("Two-dimensional array");
        }
    }

    // TODO Define your method here

    static boolean isRectangular(int[][] array) {
        if (array == null) {
            return false;
        }
        if (array.length == 0) {
            return true;
        }


        for (int reihe = 0; reihe < array.length; reihe++) {
            int zaehler = 0;
            for (int spalte = 0; spalte < array[reihe].length; spalte++) {
                zaehler++;
                array[reihe][spalte] = zaehler;
            }
        }

        if ()
        return true;
    }



        }



    }
}


Ich versuche gerade herauszufinden wie ich es implementieren könnte, dass die Anzahl der Werte pro Reihe geprüft wird und dann verglichen wird ob die Anzahl der Werte in allen Reihen gleich ist. Habt ihr vielleicht tipps oder Denkanstöße für mich?
Danke schoneinmal für eure Hilfe!
 
Dein Code verändert erst einmal werte im Array - das ist ja nicht gewünscht. Das Array soll unverändert bleiben.

Und es ist ja schon gesagt worden:
Ein rechteckiges Array (oder eine Matrix) ist ein zweidimensionales Array, bei dem alle seine Zeilen die gleiche Anzahl von Elementen haben.

Du musst also überprüfen, ob in allen Zeilen die gleiche Anzahl an Elementen ist.
Wie bekommst Du die Anzahl der Elemente eines Arrays?

Und ganz ohne dieses technische: Wie gehst DU denn vor, wenn Du mehrere Reihen Elemente hast und du schauen sollst, ob alle Reihen gleich viele Elemente haben?
 
Wie bekommst Du die Anzahl der Elemente eines Arrays?
Ich könnte mit einem Zähler und einer for schleife jede einzelne Spalte in jeder Reihe zählen um herauszufinden wie viele Werte das Array insgesamt hat. Aber ich verstehe nicht genau wie mir das hilft.

in meinem Fall wäre array.lenght 2, da das Array zwei Reihen besitzt.
Mit array[reihe].lenght komme ich zur länge der Reihe, was in diesem fall 3 wäre.
Nun muss ich noch überprüfen ob die anderen Reihen die gleiche länge haben wie die erste nicht wahr?
Aber wie genau mache ich das? Etwa so oder so ähnlich:

INI:
if (array[0].lenght == array[1].lenght && array[2].lenght == array[0].lenght){
return true;
}
 
Du merkst dir die Länge der ersten Reihe.
In einer for-Schleife vergleichst du die Längen der übrigen Reihen mit der Länge der ersten Reihe.
Sobald eine Abweichung auftritt, gibst du false zurück.
Wenn keine Abweichung aufgetreten ist, die for-Schleife also durchgelaufen ist, gibst du true zurück.
 
Danke für eure Antworten!
In einer for-Schleife vergleichst du die Längen der übrigen Reihen mit der Länge der ersten Reihe.
Sobald eine Abweichung auftritt, gibst du false zurück.
Diesen Denkanstoß hab ich gebraucht, jetzt hab ich es geschafft.
Mein fertiger Code sieht nun so aus:

Java:
public class Exercise {
    public static void main(String[] args) {
        
        int[][] array = new int[][]{{1,2,3},{0,1,2},{0,0,1}};
        
        if(isRectangular(array)){
            System.out.println("Matrix");
        }else{
            System.out.println("Two-dimensional array");
        }
    }

    // TODO Define your method here

    static boolean isRectangular(int[][] array) {
        if (array == null) {
            return false;
        }
        if (array.length == 0) {
            return true;
        }

        int laengereihe1 = array[0].length;
        for (int reihe = 1; reihe < array.length; reihe++) {
            if (laengereihe1 != array[reihe].length){
                return false;

            }



        }
        return true;
    }
}
 

Zurück
Oben