HOWTO · Java

So erhalten Sie die Länge eines 2D-Arrays in Java

Der Artikel stellt Methoden vor, um die Länge eines 2D-Arrays in Java zu ermitteln

Auf dieser Seite

Für ein Java-2D-Array namens arr gibt arr.length die Anzahl der Zeilen an. Bei einem rechteckigen Array liefert arr[0].length die Anzahl der Spalten pro Zeile, sofern das äußere Array mindestens eine Zeile enthält. Java stellt ein 2D-Array als Array dar, dessen Elemente jeweils eigene Zeilenarrays sind. Daher können die Zeilen eines unregelmäßigen Arrays unterschiedlich lang sein.

So speichert Java Zeilen und Spalten in 2D-Arrays

Eine Deklaration wie int[][] values beschreibt ein äußeres Array aus Zeilen vom Typ int[]. Das length des äußeren Arrays zählt die Zeilenreferenzen; es zählt nicht alle Ganzzahlen im Raster. Jede Zeile hat ihr eigenes length. Bei einem rechteckigen Array sind alle Zeilen gleich lang. Bei einem unregelmäßigen Array können die Zeilen unterschiedliche Längen haben.

Das Element length ist ein Feld jedes Java-Arrays und keine Methode. Schreiben Sie values.length ohne Klammern. Um eine bestimmte Zeile zu untersuchen, verwenden Sie values[rowIndex].length.

Die Dimensionen eines rechteckigen 2D-Arrays ermitteln

Verwenden Sie das length des äußeren Arrays, um die Zeilenanzahl zu bestimmen. Wenn das Array mindestens eine Zeile enthält und alle Zeilen gleich lang sind, gibt das length der ersten Zeile die Spaltenanzahl an. Das vollständige Beispiel gibt beide Dimensionen aus:

Führen Sie dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

class Main {
    public static void main(String[] args) {
        int[][] scores = {
            {8, 7, 9},
            {6, 5, 8}
        };

        int rows = scores.length;
        int columns = scores[0].length;
        System.out.println("Rows: " + rows);
        System.out.println("Columns: " + columns);
    }
}

Die Ausgabe zeigt zwei Zeilen und drei Spalten. Das entspricht den Dimensionen von scores:

Rows: 2
Columns: 3

Die Länge jeder Zeile in einem unregelmäßigen Array ermitteln

Für ein unregelmäßiges Array gibt es keine einheitliche Spaltenanzahl. Wählen Sie eine Zeile aus, um ihre Länge zu ermitteln, oder durchlaufen Sie das äußere Array, um alle Zeilen zu untersuchen. Die Schleifenbedingung verwendet rows.length, während rows[i].length die Länge der ausgewählten Zeile angibt:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

class Main {
    public static void main(String[] args) {
        int[][] rows = {
            {4, 2},
            {7, 1, 3},
            {9}
        };

        System.out.println("Rows: " + rows.length);
        for (int i = 0; i < rows.length; i++) {
            System.out.println("Row " + i + " length: " + rows[i].length);
        }
    }
}

Die Ausgabe gibt die Länge jeder Zeile an. Wenn Sie nur eine Zeile benötigen, verwenden Sie einen Ausdruck wie rows[1].length:

Rows: 3
Row 0 length: 2
Row 1 length: 3
Row 2 length: 1

Leere oder null-Zeilen sicher behandeln

Bevor Sie arr[0].length auslesen, prüfen Sie, ob das äußere Array eine Zeile enthält. Ein mit new int[0][] erstelltes Array hat keine erste Zeile. Prüfen Sie daher arr.length > 0, bevor Sie auf Index 0 zugreifen. Prüfen Sie bei einer bestimmten Zeile zuerst rowIndex >= 0 && rowIndex < arr.length. Java-Arrayindizes beginnen bei null; der letzte gültige Index ist um eins kleiner als arr.length. Stellen Sie anschließend sicher, dass arr[rowIndex] nicht null ist, bevor Sie dessen Länge auslesen. Das Dereferenzieren einer null-Zeile verursacht eine NullPointerException. Eine vorhandene Zeile ohne Elemente ist etwas anderes: Ihre Länge ist 0 und lässt sich sicher auslesen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

class Main {
    public static void main(String[] args) {
        int[][] arr = { {1, 2}, null, {} };

        System.out.println("Rows: " + arr.length);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == null) {
                System.out.println("Row " + i + " is null");
            } else {
                System.out.println("Row " + i + " length: " + arr[i].length);
            }
        }
    }
}

Dieses Beispiel erzeugt folgende Ausgabe:

Rows: 3
Row 0 length: 2
Row 1 is null
Row 2 length: 0

Die null-Zeile wird erkannt, ohne sie zu dereferenzieren; die angelegte Zeile ohne Elemente hat dagegen die Länge null. Falls auch das äußere Array selbst null sein kann, prüfen Sie arr != null, bevor Sie arr.length auslesen.