Arry definieren in 3 Dim.

tomovic

Bekanntes Mitglied
hallo,
ich muss ein 3 Dimension Arry erstellen und zugleich Werte zuweisen.

eine Dimension war kein Problem.
Java:
float[] pos_xyz= {1,2,3,4,5,6,7,8,9,0};

Meine Idee:
Java:
float[][][] pos_xyz= // und weiter?
 

lordofdonuts

Aktives Mitglied
Hallo Tomovic,

bitte:

Java:
        // 1 dim
        float[] f = new float[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
        
        // 2 dim
        float[][] f2 = new float[][]{ {1,2}, {3,4}, {5,6}, {7,8}, {9,0}};
        
        // 3 dim
        float[][][] f3 = new float[][][]{ { {1,2}, {3,4} }, { {5,6}, {7,8}  }, { {9,0} } };

1-dimensionales Array:
ganz normale Ansammlung von Werten

2-dimensionales Array:
Ansammlung von Werten als Ansammlung von Werten

3-dimensionales Array:
Ansammlung von Werten in einer Ansammlung von Werten als Ansammlung von Werten

Was willst du eigentlich durch dieses Konstrukt erreichen?
 

tomovic

Bekanntes Mitglied
thx,
ok, ich steig da nicht richtig durch:
Woher weis ich ob 5 zur ersten Dim. oder zur 2ten Dim. gehört?
[0][0] = 1;
[0][1] = 2;
[0][2] = 3;
[1][0] = 4;

entspricht:
float[][] f2 = new float[][]{ {1,2,3}, {4}}

geht das so?
 

Bug Fisher

Bekanntes Mitglied
lordofdonuts hat gesagt.:
Ansammlung von Werten in einer Ansammlung von Werten als Ansammlung von Werten
Cool :) !

@tomovic: Dass das Array nicht "rechtwinklig", also nicht in jeder Dimension gleich "tief" ist, ist ein feature von Java (C# erlaubt das z.B. auch); Eigentlich ist es ein (inhärenter) Hinweis darauf, dass der Platz auf dem heap statt auf dem stack besorgt wird (compile-time vs run-time) Man spricht von jagged-arrays !

In Java ist es easy:

Java:
final int[][][] values = {{{1}}, {{2, 3}}, {{4, 5}}, {{6, 7, 8}}};
for(int[][] v_ : values) {
    for(int [] v__ : v_) {
        for(int v___ : v__) {
        //u got it in v___
        }
    }
}
 

tomovic

Bekanntes Mitglied
thx all,
Java:
float[][][] daten =  {{{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1},{1, 1, 1}}};

daten[a][c]

b kann ich bis 8 füllen ohne Probleme das reicht mir auch eigentlich.
wenn ich a die Zahl 1 zuweise stützt mein Prog ab.
Bei c bekomme ich bei 10 Probleme

a = max 30
b = max 10
c = max 20
 

Joose

Top Contributor
b kann ich bis 8 füllen ohne Probleme das reicht mir auch eigentlich.
wenn ich a die Zahl 1 zuweise stützt mein Prog ab.
Bei c bekomme ich bei 10 Probleme

Deine Struktur ist falsch initialisiert! Kontrolliere die Klammern und füge logische Zeilenumbrüche ein damit es übersichtlicher wird.

Generell: Wenn es sich vermeiden lässt solltest du statt einem 3d-Array lieber eine eigene Klasse oder ein Tuple verwenden um diese in einer Struktur zu verpacken.
 

kaoZ

Top Contributor
Java:
int[][][] = 
{	//1.dim
	{	//2.dim
		{	//3.dim
			.....
		}
	}
};

Du befüllst letzten endes nur die 3 Dimension mit Werten, die 1 und 2 Dimension gibt ja nur an wie viele Informationen du wiederum in ihr hinterlegen kannst.

Sprich

Java:
public class Foo{

	public static void main(String[] args){
		

		int[][][] arr =
			{
				{
					{1,2,3},
					{2,4,5}
				}
			};
		
		
		System.out.println(arr[0][0][1]); 	//2
		System.out.println(arr[0][1][2]);	//5
		
	}
}


PS : Warum ist eigentlich die Formatierung seit dem Update so grausam.... die Whitespaces sind ja schrecklich ^^ fällt das nur mir auf wenn ich was paste, oder hast das schon wer gemeldet ?
 
Zuletzt bearbeitet:

tomovic

Bekanntes Mitglied
Java:
int[][][] = 
{	//1.dim
	{	//2.dim
		{	//3.dim
			.....
		}
	}
};

Du befüllst letzten endes nur die 3 Dimension mit Werten, die 1 und 2 Dimension gibt ja nur an wie viele Informationen du wiederum in ihr hinterlegen kannst.

Sprich

Java:
public class Foo{

	public static void main(String[] args){
		

		int[][][] arr =
			{
				{
					{1,2,3},
					{2,4,5}
				}
			};
		
		
		System.out.println(arr[0][0][1]); 	//2
		System.out.println(arr[0][1][2]);	//5
		
	}
}


PS : Warum ist eigentlich die Formatierung seit dem Update so grausam.... die Whitespaces sind ja schrecklich ^^ fällt das nur mir auf wenn ich was paste, oder hast das schon wer gemeldet ?
bin 2 Stunden vor eurer Antwort gestanden. Trotzdem Danke.

{1,2,3} // ok, ich befülle den Array
[0][0][0] //-> 1
[0][0][1] //-> 2
[0][1][0] //-> 3

stimmt das so?

Wenn ich aber zusätzlich...
{2,4,5}...nutze, dann überschreibe ich doch 1,2,3

Wenn ich später z.B. [11][12][13] nutzen will muss ich ja insgesammt über 1000 Dummy in die Klammer setzen ?
 
Zuletzt bearbeitet:

Joose

Top Contributor
{1,2,3} // ok, ich befülle den Array
[0][0][0] //-> 1
[0][0][1] //-> 2
[0][1][0] //-> 3

stimmt das so?
Wenn ich aber zusätzlich...
{2,4,5}...nutze, dann überschreibe ich doch 1,2,3

Nein.
Ich würde vorschlagen übst vorerst mal mit 2dimensionalen Arrays! Wenn du diese verstanden hast kannst du dich an 3dim machen.

Es wurde oben schon erklärt:
Code:
// 1 dim
float[] f = new float[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
 
System.out.println(f1[0]); //1
System.out.println(f1[3]); //4

// 2 dim
float[][] f2 = new float[][]{ 
    {1,2}, 
    {3,4}, 
    {5,6}, 
    {7,8}, 
    {9,0}
};

System.out.println(f2[0][0]); //1
System.out.println(f2[0][1]); //2
System.out.println(f2[2][0]); //5
System.out.println(f2[4][1]); //0
 
// 3 dim
float[][][] f3 = new float[][][]{ 
   { 
      {1,2}, 
      {3,4} 
   }, 
   { 
      {5,6}, 
      {7,8} 
   }, 
   { 
       {9,0} 
   } 
};

System.out.println(f3[0][0][0]); //1
System.out.println(f3[0][0][1]); //2
System.out.println(f3[0][1][0]); //3
System.out.println(f3[0][1][1]); //4
System.out.println(f3[1][0][1]); //6
System.out.println(f3[1][1][0]); //7
System.out.println(f3[2][0][0]); //9

Wenn ich später z.B. [11][12][13] nutzen will muss ich ja insgesammt über 1000 Dummy in die Klammer setzen ?

Deswegen sollten solche Strukturen entweder eingelesen werden (von der Konsole, Datei, Datenbank, ....) oder wie weiter oben schon gesagt setzt du auf eigene Klassen welche etwas OOP in dein Programm bringen.
 

Maskin

Mitglied
Vielleicht hilft dir das hier ein wenig, aber wie Joose bereits sagte, fang zuerst mal mit den 2d Arrays an.
Java:
public static void main(String[] args) {


		int[][][] arr =
			{ //3 Elemente
				{ //4 Elemente
					{1,2,3}, // 3 Elemente
					{4,5,6},
					{7,8,9},
					{10,11,12} 
				},
				{// 5 Elemente
					{1,2,3},
					{2,4,5},
					{3,7,8},
					{23,27,28},
					{4,9,10}
				},
				{
					{1,2,3},
					{2,4,5},
					{1,2,3},
					{2,4,5,4}// 4 Elemente
				}
			};
		
	    
		System.out.println("Größe 1 Dim für das 1 Element: " + arr.length);
		System.out.println("Größe 2 Dim für das 1 Element: " + arr[0].length);
		System.out.println("Größe 3 Dim für das 1 Element: " + arr[0][0].length);
		//Die Größe der einzelnen Ebenen kann sich hier unterscheiden
		
                for(int i=0; i<arr.length; i++) {
			for(int j=0; j<arr[i].length; j++){
				for (int k=0; k<arr[i][j].length; k++){
			
					System.out.println("i: " + i + "/ j: " + j + " / k: " + k + " ---> value: " + arr[i][j][k]);
				
				}
				
			}
		}


	}

Und hier die Ausgabe der for- Schleifen
Code:
i: 0/ j: 0 / k: 0 ---> value: 1
i: 0/ j: 0 / k: 1 ---> value: 2
i: 0/ j: 0 / k: 2 ---> value: 3
i: 0/ j: 1 / k: 0 ---> value: 4
i: 0/ j: 1 / k: 1 ---> value: 5
i: 0/ j: 1 / k: 2 ---> value: 6
i: 0/ j: 2 / k: 0 ---> value: 7
i: 0/ j: 2 / k: 1 ---> value: 8
i: 0/ j: 2 / k: 2 ---> value: 9
i: 0/ j: 3 / k: 0 ---> value: 10
i: 0/ j: 3 / k: 1 ---> value: 11
i: 0/ j: 3 / k: 2 ---> value: 12
i: 1/ j: 0 / k: 0 ---> value: 1
i: 1/ j: 0 / k: 1 ---> value: 2
i: 1/ j: 0 / k: 2 ---> value: 3
i: 1/ j: 1 / k: 0 ---> value: 2
i: 1/ j: 1 / k: 1 ---> value: 4
i: 1/ j: 1 / k: 2 ---> value: 5
i: 1/ j: 2 / k: 0 ---> value: 3
i: 1/ j: 2 / k: 1 ---> value: 7
i: 1/ j: 2 / k: 2 ---> value: 8
i: 1/ j: 3 / k: 0 ---> value: 23
i: 1/ j: 3 / k: 1 ---> value: 27
i: 1/ j: 3 / k: 2 ---> value: 28
i: 1/ j: 4 / k: 0 ---> value: 4
i: 1/ j: 4 / k: 1 ---> value: 9
i: 1/ j: 4 / k: 2 ---> value: 10
i: 2/ j: 0 / k: 0 ---> value: 1
i: 2/ j: 0 / k: 1 ---> value: 2
i: 2/ j: 0 / k: 2 ---> value: 3
i: 2/ j: 1 / k: 0 ---> value: 2
i: 2/ j: 1 / k: 1 ---> value: 4
i: 2/ j: 1 / k: 2 ---> value: 5
i: 2/ j: 2 / k: 0 ---> value: 1
i: 2/ j: 2 / k: 1 ---> value: 2
i: 2/ j: 2 / k: 2 ---> value: 3
i: 2/ j: 3 / k: 0 ---> value: 2
i: 2/ j: 3 / k: 1 ---> value: 4
i: 2/ j: 3 / k: 2 ---> value: 5
i: 2/ j: 3 / k: 3 ---> value: 4
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Ich versuche immer gerne es auf irgendetwas sinnbildliches zu Übertragen , bei
2-Dim Arrays wäre dies z.B ein Schrank mit Schubladen, bei einem 3-Dim Array hätten die Schubladen dann auch noch Fächer.

So konnte ich mir Stück für Stück den ganzen firlefanz mit den Mehrdimensionalen Arrays bei bringen, ein Mehrdimensionales Array ist letzten endes nichts anderes als :

Ein Array , welches aus weiteren Arrays besteht.

1- Dimensional = Schubladen

2- Dimensional = Schrank mit Schubladen

3- Dimensional = Schrank mit Schubladen die wiederum in einzelne Fächer unterteilt sind.

Also mir das anfangs eigentlich ganz gut weitergeholfen ;)

Array bedeutet ja nun auch nichts anderes als "Feld", und ein Mehrdimensionale Array

ist eben ein Feld , welches sich aus weiteren Feldern zusammensetzt :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
T Arry ausgeben Java Basics - Anfänger-Themen 1
T Variablen NullPointerException bei einem Arry? Java Basics - Anfänger-Themen 6
G highscore arry Java Basics - Anfänger-Themen 7
S Auf Element in Arry zugreifen Java Basics - Anfänger-Themen 7
D Arry Casting Java Basics - Anfänger-Themen 30
U Arry verschieben Java Basics - Anfänger-Themen 2
S prob mit add in einer arry list Java Basics - Anfänger-Themen 13
C Problem: Mehrdimensionales Arry Java Basics - Anfänger-Themen 10
G arry maxbetrag Java Basics - Anfänger-Themen 4
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
B Hotkeys selbst definieren? Java Basics - Anfänger-Themen 1
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
S Instanzvariablen vom Typ einer Klasse definieren Java Basics - Anfänger-Themen 12
F Referenzvariable vom Typ "Integer" definieren. (Klausuraufgabe) Java Basics - Anfänger-Themen 5
B Log4J Pfad des Logfiles definieren Java Basics - Anfänger-Themen 6
F Enum via String definieren Java Basics - Anfänger-Themen 2
S Methode außerhalb der Klasse definieren Java Basics - Anfänger-Themen 5
Tom299 Log4j in jeder Klasse definieren? Java Basics - Anfänger-Themen 12
M Array definieren Java Basics - Anfänger-Themen 5
F Klasse Rechteck definieren Java Basics - Anfänger-Themen 21
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
K Eigenschaften Definieren für Produkte in einer Klasse Java Basics - Anfänger-Themen 6
M Methode mit beliebigen Parametern in abstrakter Klasse definieren Java Basics - Anfänger-Themen 8
B Definieren von package scope Java Basics - Anfänger-Themen 2
M Tabellenspaltengröße definieren Java Basics - Anfänger-Themen 4
J Funktion definieren und ausfuehren Java Basics - Anfänger-Themen 27
J Erste Schritte Zahlenbereich definieren Java Basics - Anfänger-Themen 2
F Klassen Eigene Klasse definieren Java Basics - Anfänger-Themen 4
P Variablen Guthaben anders definieren Java Basics - Anfänger-Themen 7
M variablen definieren Java Basics - Anfänger-Themen 9
P übergreifend variable definieren Java Basics - Anfänger-Themen 10
C variablen definieren? Java Basics - Anfänger-Themen 8
M ArrayList mit einer Grösse definieren Java Basics - Anfänger-Themen 9
capgeti Datentypen Static methoden aus Superklasse mit Generics definieren? Java Basics - Anfänger-Themen 9
G Mit Apache POI Kopfzeilen definieren Java Basics - Anfänger-Themen 11
V Suchabfrage definieren Java Basics - Anfänger-Themen 9
K indexOf selbst rekursiv definieren Java Basics - Anfänger-Themen 4
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
J diverse Begriff definieren Java Basics - Anfänger-Themen 6
J Begriff Lebensdauer definieren Java Basics - Anfänger-Themen 12
R Interface innerhalb einer Klasse definieren..? Java Basics - Anfänger-Themen 2
K konstruktur als public definieren Java Basics - Anfänger-Themen 11
M Eingabenanzahl definieren Java Basics - Anfänger-Themen 6
P String über mehrere Zeilen definieren Java Basics - Anfänger-Themen 3
S break Label als Spungmarken vorher definieren Java Basics - Anfänger-Themen 4
G mehrere delimiters definieren Java Basics - Anfänger-Themen 2
R textfeld größe definieren Java Basics - Anfänger-Themen 2
M größe für Applet definieren Java Basics - Anfänger-Themen 4
A neuen Datentyp (Digit) definieren Java Basics - Anfänger-Themen 12
J Arraylänge mit Ctor definieren Java Basics - Anfänger-Themen 2
R Reguläre Ausdruck definieren Java Basics - Anfänger-Themen 3
G Methoden + variablen als final definieren? Java Basics - Anfänger-Themen 3
D Definieren von Arrays Java Basics - Anfänger-Themen 3
D flash object mit JS definieren.auch für Java Applet? Java Basics - Anfänger-Themen 13
S Übergroße Arrays definieren Java Basics - Anfänger-Themen 10
G Variable in Interface definieren Java Basics - Anfänger-Themen 6
G args definieren in netbeans Java Basics - Anfänger-Themen 4
E Webmodul definieren Java Basics - Anfänger-Themen 2
S Formate für Strings definieren Java Basics - Anfänger-Themen 4
E Buttongröße definieren Java Basics - Anfänger-Themen 17
M eigene klasse definieren und verfügbar machen Java Basics - Anfänger-Themen 9
G Innere klasssen unde "extends" klassen definieren, Java Basics - Anfänger-Themen 2
T Variablen zur Laufzeit definieren Java Basics - Anfänger-Themen 3
M Eigenes Seitenformat definieren Java Basics - Anfänger-Themen 2
N Klasse definieren Java Basics - Anfänger-Themen 3
G Tastenkombinationen für Programm definieren Java Basics - Anfänger-Themen 6
N Packages definieren bzw. zum Classpath hinzufügen Java Basics - Anfänger-Themen 4
Dilandau konstante eigene farben im programm definieren Java Basics - Anfänger-Themen 13
Dilandau array aus konstanten definieren? Java Basics - Anfänger-Themen 6
W Klassen durch implements abstrakt definieren Java Basics - Anfänger-Themen 6
J "globale" variable definieren? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben