Frage zu mehrdimensionalen Arrays

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe eine Frage zu mehrdimensionalen Arrays bzw. wie man sie deklariert. Habe ich das richtig gesehen, daß man normale Arrays per

Code:
int[]  testArray = {1};

deklariert, und mehrdimensionale Arrays per

Code:
int[][] testArray = {{1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}};

? Ganz egal wieviele Dimensionen das Array hat, man schreibt immer nur zwei [] hin um damit "anzuzeigen", daß es sich um ein mehrdimensionales Array mit beliebig vielen Dimensionen handelt (so wie oben beschrieben ein 8 dimensionales Array)?


Der Zugriff auf die einzelnen Felder erfolgt aber ganz normal per

Code:
testArray[0][0][0][0][0][0][0][0][1]
?

Danke,
Fritz

Edit by Beni: blöde Fragen gibt es nicht
Edit by Illuvatar: blöde Fragen gibt es nicht Teil 2
 

Wildcard

Top Contributor
Nein, das hast du falsch verstanden.
Code:
int[][] testArray = {{1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}};
ist kein 8 dimensionales Array, sondern ein 2 dimensionales mit einer Spalte, und 8 Zeilen.
 

meez

Top Contributor
Code:
int[][] testArray = {{1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}};

Das ist ja auch "nur" ein zweidimensionales Array...

Ansonsten kannst du schon sowas schreiben:
Code:
 int[][][] zzz = new int[4][3][2];
oder irgenwie sowas:
Code:
 int[][][] zzz = { { {4,5,3}, {5,4,5}, {6,5,6,5},{4,5,3}, {5,4,5}, {6,5,6,5}},   
{ {4,5,3}, {5,4,5}, {6,5,6,5},{4,5,3}, {5,4,5}, {6,5,6,5}},
{ {4,5,3}, {5,4,5}, {6,5,6,5},{4,5,3}, {5,4,5}, {6,5,6,5}},   
{ {4,5,3}, {5,4,5}, {6,5,6,5},{4,5,3}, {5,4,5}, {6,5,6,5}}  ;


EDIT: Mist zu langsam...
 

bambi

Bekanntes Mitglied
also 2dim array waere das:
Code:
int[][] my2DimArray = {{1,2,3},{4,5,6},{...}}


ein 3dim array waere dann also:
Code:
int[][][] my3DimArray = {{{1,2,3},{4,5,6},{...}} , {{1,2,3},{4,5,6},{...}} , {{1,2,3},{4,5,6},{...}}}

Zugriff:

Code:
my3DimArray[0][0][0] -> 1
my3DimArray[0][0][1] -> 2
u.s.w.

oder hab' ich jetzt dein problem falsch verstanden?
 

TP

Mitglied
Ich schließe mich gleich an was Array-Fragen angeht: Gibt es eine Methode die mir die Dimension eines Arrays zurückgibt oder muss ich mir die selber basteln?

In der JavaDoc habe ich nur Methoden gefunden die mir die Länge zurück geben.....nicht gut genug geschaut? :)

ciao,
TP
 

Wildcard

Top Contributor
Du kennst die Dimensionen doch wenn du das Array anlegst? Warum willst du das später rausfinden?
 

meez

Top Contributor
TP hat gesagt.:
Ich schließe mich gleich an was Array-Fragen angeht: Gibt es eine Methode die mir die Dimension eines Arrays zurückgibt oder muss ich mir die selber basteln?

Nein, weil es keine eigentlichen mehrdimensionalen Arrays gibt, sondern nur Arrays in Arrays
 

TP

Mitglied
verstehe....

naja ich bastle gerade zur übung eine klasse die mir die verschachetlung der arrays in der console grafisch darstellt, und ich würde das ganze gerne dynamisch anhand eines übergebenen arrays generieren lassen, daher brauche ich die dimension des arrays früher oder später ;)

ich muss mal grübeln ob ich dazu einen ansatz finde :) ich hoffe durch solche "grundlagenforschung" mich mal mit den absoluten basics vertraut zu machen.

noch eine frage:

Code:
 int length = java.lang.reflect.Array.getLength( array );

Wieso muss man hier expliziet java.lang.reflect angeben? Ein reines

Code:
 int length = Array.getLength( array );
oder
Code:
 int length = getLength( array );

funktioniert nicht.

java.lang

wird ja automatisch importiert,

java.lang.reflect

anscheinend nicht? Finde ich unlogisch, ist reflect doch innerhalb von lang?

(ja ich muss zugeben, bei dem Kapitel Bibliotheken bin ich im Buch nocht nicht angelangt :))

ciao und wiedermal danke :)
TP
 

mic_checker

Top Contributor
TP hat gesagt.:
Ich schließe mich gleich an was Array-Fragen angeht: Gibt es eine Methode die mir die Dimension eines Arrays zurückgibt oder muss ich mir die selber basteln?

Du könntest dir doch aber noch "helfen":

Sagen wir der Einfachheitshalber du hast ein zweidimensionales array:

Code:
           int[][] testfeld = new int[4][3];
           
           System.out.println("Anzahl der Zeilen = "+testfeld.length);
           System.out.println("Anzahl der Spalten = "+testfeld[0].length);
 

TP

Mitglied
Naja, dieses Methode kann ich ja nur anwenden wenn ich weiß wieviele Dimensionen ein Array hat oder?

Obwohl man natürlich auch pfuschen könnte und die NullPointerException abfangen könnte ;-)

Das sind so meine Vorstellungen :)
 
B

Beni

Gast
TP hat gesagt.:
...Wieso muss man hier expliziet java.lang.reflect angeben? Ein reines ...

Das "Alles was in java.lang ist wird erkannt"-Konzept gilt nur für Klassen und Interfaces, nicht aber für Unterpackages.

P.S. es geht auch einfacher:
Code:
int length = array.length;
 

mic_checker

Top Contributor
TP hat gesagt.:
Naja, dieses Methode kann ich ja nur anwenden wenn ich weiß wieviele Dimensionen ein Array hat oder?

Probier es doch aus, ich hab zwar die Dimensionen angegeben bei der Deklaration, aber bei der Ausgabe verwerte ich das ja nicht explizit, sondern lass die "Länge" des Arrays und der Zeilen (sozusagen) bestimmen.
 

TP

Mitglied
Beni hat gesagt.:
P.S. es geht auch einfacher:
Code:
int length = array.length;
ja danke, das kannte ich schon. ich hatte nur die hoffnung das mir die von mir benütze methode die dimension bringt und ich nur zu blöd war die doku zu verstehen ;)

mic_checker: was ich meine ist folgendes:

Code:
   int[][][] testfeld = new int[4][3][8];
   
   System.out.println("Anzahl der Zeilen = "+testfeld.length);
   System.out.println("Anzahl der Spalten = "+testfeld[0].length);

Output:

Anzahl der Zeilen = 4
Anzahl der Spalten = 3

die dritte Dimension wird ja nicht abgefragt - woher auch? :)

Worauf ich hinaus will ist: Man müsste das ganze doch rekrusiv per schleife solange durchlaufen lassen bis eine java.lang.ArrayIndexOutOfBoundsException Fehlermeldung kommt. Wenn ich nicht weiß wieviele Dimensionen das Array hat muss ich es ja irgendwie herausfinden. Meine Idee ist eben so, daß man abfragt ob

testFeld[0]

existiert

dann ob

testFeld[0][0]

existiert, dann ob

testFeld[0][0][0]

existiert, dann ob

testFeld[0][0][0][0]

existiert usw -> bis eben die indexoutofbounds-exception kommt, dann weiß man doch, daß diese "tiefe" nicht mehr gibt oder? klar, eine absolute pfusch methode, aber ich habe keine andere idee wies sonst gehen soll wenn man die dimension des arrays nicht kennt.

verstehst du worauf ich hinaus will? :)

ciao,
TP
 
B

Beni

Gast
Stell dir ein Array wie ein Buch vor (die Seiten sind die Elemente, die Seitenzahlen der Index).

Also: ein Buch = ein Array "String[] array"

Ein Büchergestellt ist eine Sammlung von Arrays: Büchergestellt = "String[][] array".

Nun müssen innerhalb eines Büchergestelltes aber nicht nur gleichgrosse Bücher stehen, sie können auch unterschiedliche Anzahl Seiten haben. Aber es wird garantiert kein Buch innerhalb eines Buches sein.

Bei deinem testfeld[][][] (sozusagen ein Raum voller Büchergestelle), weisst du bereits, dass es ein Array von Arrays von Arrays ist, du musst also nicht herausfinden wie tief diese Rekursion geht.

Wenn du z.B. alle Werte dieses testfeldes ausgeben willst, machst du das dann am einfachsten so:
Code:
int[][][] testfeld = ???

for( int i = 0; i < testfeld.length; i++ )  // Anzahl "Büchergestelle" abfragen
  for( int j = 0; j < testfeld[i].length; j++ )    // Anzahl "Bücher" im aktuellen "Gestell" abfragen
    for( int k = 0; k < testfeld[i][j].length; k++ )      // Anzahl "Seiten" im aktuellen "Buch" abfragen
      System.out.println( "Wert " + i + ", " + j + ", " + k " ist: " +testfeld[i][j][k]  );
 

TP

Mitglied
ich habe irgendwo einen knoten in meinem gehirn, mal schaun ob ich dne aufbekomme ;) danke für dein ausführliches posting beni!

mic_checker: hehe für mich ja auch nicht, deswegen rede ich ja von "pfusch" :)

ciao
TP
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Erste Schritte Frage zur Initialisierung eines Mehrdimensionalen Arrays Java Basics - Anfänger-Themen 3
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
F Frage zu Iteratoren Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
H Frage zum Array Java Basics - Anfänger-Themen 17
G Schach -Frage 2- Maussteuerung Java Basics - Anfänger-Themen 7
G Schach in Java - Allgemeine Frage zur Architektur Java Basics - Anfänger-Themen 7
B Fachliche Frage bei Rechnungen Java Basics - Anfänger-Themen 16
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
B Frage zu Datenbank Design - Rechnungen, Angebote... und deren Positionen Java Basics - Anfänger-Themen 4
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Einfache Frage zur Punktnotation objektname.methode(wert) Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben