Was bedeutet bei einem Array "int a [MAX][MAX];",

Anfaengerin

Aktives Mitglied
.... wenn "a" das Array ist?

Sorry, man schreibt es ohne das Leerzeichen zwischen a und [MAX][MAX], also "int a[MAX][MAX];".
 
Zuletzt bearbeitet:
Bring mal Deine Frage in Ordnung, so wie Du es geschrieben hast, ist es nicht gültig in Java.

Zwei mal Index in eckiger Klammer bedeutet, es handelt sich um ein zweidimensionales Array.

Index meint dabei, die Position im Array, beginnend bei 0 (Null).

In Java sind alle Arrays Objekte.

Mehrdimensionale Arrays sind Arrays von Arrays.

Es gibt andere Programmiersprachen, in denen mehrdimensionale Arrays auf eindimensionale Arrays umgerechnet werden, in Java ist das nicht so.

Java:
int[] a0 = new int[]{ 0 , 1 , 2 };

int[][] a = new int[][]{ a0 , null };
 
Wait, da steht "int a[][] = new int[MAX][MAX]". So ist es richtig.
Ich hatte eine C-Version des Programms angeschaut, aber "
Java:
"int a[][] = new int[MAX][MAX]"
" ist wirklich richtig. Und das Programm läuft.

Sorry nochmal. Ich wollts oben schon ändern, aber da kann ich grad nicht bearbeiten.
 
Zuletzt bearbeitet:
Java:
"int a[][] = new int[MAX][MAX]"
"

ist wirklich richtig. Und das Programm läuft.

Du hast ein bisschen recht, also die Klammern hinter dem Variablen sind erlaubt, es fehlt aber noch die initiale Zuweisung (es sei denn, es handelt sich um ein Feld einer Klasse, keine lokale Variable).

JLS Arrays

Diese Notation ist sicher eine Altlast aus C / C++, die Entwickler aus diesen Sprachen sollte Java abholen.

In Pascal hieß es schon in den 80ern "array of ...".

In Swift wird es richtig gemacht, die Klammer ist um den Element-Typ herum, da wird nicht aus einem int hinten rum ein Array gemacht, sondern es ist ein Array von Element-Typ ... .
 
Hier wird ein Array mit der Dimension 10 x 10 erzeugt. Man kann sich das wie ein Schachbrett vorstellen. Zum Verständnis wird hier das 10. Feld in der 10. Zeile mit einem Wert gefüllt.

Java:
public class Main {

    static int MAX = 10;
    static int[][] a = new int[MAX][MAX];

    public static void main(final String[] args) {

        int b = a[MAX - 1][MAX - 1];
        System.out.format("b = %s%n", b);

        a[MAX - 1][MAX - 1] = 9;

        b = a[MAX - 1][MAX - 1];
        System.out.format("b = %s%n", b);

        Arrays.spliterator(a).forEachRemaining(ax -> System.out.println(Arrays.toString(ax)));

    }

}

Am Ende wird das Array in Zeilen aufgeteilt und jede Zeile wird für sich ausgegeben.

Ergebnis:
Code:
b = 0
b = 9
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 9]

Möglicherweise kannst du es so besser verstehen.
 
Zuletzt bearbeitet:

Zurück
Oben