Arrays, genauergesagt mehrdimensionale Arrays in Java. Wie werde ich Arrays "profi"?

...komplette Frage anzeigen

3 Antworten

Tabelarisches Ausgeben ist schon mal gut.

Mehrdimensionale Arrays kann man sich nämlich ähnlich wie Tabellen oder auch Matritzen vorstellen. Nur, dass man bei mehrdimensionalen Arrays nicht im 2-dimensionalen Raum von Tabellen gefangen ist, sondern in jede Dimension gehen könnte. So könnte man mit einem 3-dimensionalen Array zB Raumkoordinaten o.ä. speichern.

Was du bei der Addition falsch machst, kann ich hier nur raten. Du gibst immer zuerst die Zeile und dann die Spalte an. Ich vermute mal, dass du eine Ausgabe über Schleifen konstruiiert hast und die Addition auch. Sollte das der Fall sein, könnte es natürlich sein, dass du eine Zahl mit jeder Zahl der Reihe multiplizierst? Falls du sehr große Zahlen und große Arrays hast, könnte es außerdem passieren dass du den Integer-Maximalwert überschreitest und dadurch "Blödsinn" bekommst… (bei einer Addition zwar eher unwahrscheinlich, aber in den Raum stellen möchte ich es trotzdem). Ohne Code kann man aber hier nur raten.

Wäre gut, wenn du was einstellst, dann könnte man genauer auf deine Missverständnisse und Fehler eingehen ;)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von SweatTechnique
20.05.2016, 03:42

Also das wäre der Codeteil der eigentlich den Mittelwert errechnen sollte. Aber wie man sieht summiert er schon irgendwie nicht richtig. Denn er gibt **immer*** 2.0 aus. :-D

public static void main(String[] args)
{
int[][] zahlen = new int[7][2];

zahlen[0][0] = 1;
zahlen[0][1] = 12;
zahlen[1][0] = 2;
zahlen[1][1] = 14;
zahlen[2][0] = 3;
zahlen[2][1] = 19;
zahlen[3][0] = 4;
zahlen[3][1] = 42;
zahlen[4][0] = 5;
zahlen[4][1] = 51;
zahlen[5][0] = 6;
zahlen[5][1] = 51;
zahlen[6][0] = 7;
zahlen[6][1] = 9;

int l = zahlen[1].length-1;
double summe = 0;

for(int i= 0; i < l; i++)
{
summe += zahlen[0].length;

}
double ergebnis = summe / l;

System.out.println("Mittelwert: " + ergebnis);

}
0

Eindimensionale Arrays kann man sich als Liste vorstellen. Zweidimensionale als Tabelle. Das ist noch sehr einfach. Bei dreidimensionalen Arrays wird's schwerer. Ich finde da die Vorstellung von "mehrere Tabellen" hilfreich, erster Index ist Nummer der Tabelle, die anderen der Index in dieser Tabelle. Mehr als 3 Dimensionen wirst du nicht brauchen.

Welche Fehler du beim Addiere machst kann ich dir nicht sagen, prinzipiell sollte die "Formel" aber E[z,s] = A[z,s] + B[z,s] sein.

Antwort bewerten Vielen Dank für Deine Bewertung

Sehr interessant. Was das Thema Arrays betrifft:

Viele sprechen mehrdimensionale Arrays via: 

String[][] myArray = new String[4][4];
myArray[0][0] = "Hallo";

also direkt über die Position in der Array an. - Wenn du dich also an den Dimensionen störst, dann solltest du die Dimensionen einfach auflösen.

Denn so lässt sich eine 2 und mehr Dimensionale Array wie eine "Array an der Position in einer Array" darstellen. Hier mal ein Beispiel:

String[][] myArray;
myArray = new String[4][4];
myArray[0] = new String[] {"Test1", "Test2", "Test3", "Test4"};
myArray[1] = new String[] {"Test5", "Test6", "Test7", "Test8"};
myArray[2] = new String[] {"Test9", "Test10", "Test11", "Test12"};
myArray[3] = new String[] {"Test13", "Test14", "Test15", "Test16"};

for (int i = 0; i < myArray.length; i++) { String[] subArray = myArray[i]; for (int j = 0; j < subArray.length; j++) { String value = subArray[j]; System.out.println(value);
}
}

Eine zweidimensionale Array kann man wie ein Koordinatensystem mit x und y betrachten und eignet sich für die Darstellung von Tabellen, Matrizen, Spielbrettern, etc.

Bei dreidimensionalen Arrays findet man die Anwendung bei Raum-Koordinaten. Wie aus dem CAD, bei dem man 3D Punkte im Koordinatensystem mit: x y und z hat.

Beim gegebenen Beispiel funktioniert das Verschachteln von 3D Arrays genauso.

Edit: Habe dein Codebeispiel übersehen, ich ergänze im Kommentar.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von KnusperPudding
20.05.2016, 07:41
// Hier hast du eine Variable: "l"
// Diese hat die Länge: 2(also 2 Mögliche Werte) - 1 = 1
int l = zahlen[1].length - 1;

double summe = 0; // Hier durchläufst du eine Schleife, die exakt einmal durchläuft, // Denn nur im ersten Durchlauf ist die Bedingung i < 1 wahr for (int i = 0; i < l; i++) { // Was du aufsummierst, ist die Länge der ersten Subarray // Sprich: 2 summe += zahlen[0].length; }
// Hier wird das Ergebnis durch 1 geteilt double ergebnis = summe / l; System.out.println("Mittelwert: " + ergebnis);

Daher mein Tipp:

Deklariere mehrere Variablen, am besten mti selbtsprechenderen Namen, sofern du mit kurzen namen wie "l" Probleme bekommst.

Sprich: Deklariere die SubArrays.

Beim Mittelwert benötigst bei deiner Berechnung Im Dividenden die Summe deiner SubArray-Werte und nicht die Länge. - Der Divisor wiederum muss der Anzahl der Einträge deiner SubArray entsprechen:

double summe = 0;
int[] subArray1 = zahlen[0];
for (int i = 0; i < subArray1.length; i++) {
    summe += subArray1[i];
}
double ergebnis = summe / subArray1.length;
System.out.println("Mittelwert: " + ergebnis);
1

Was möchtest Du wissen?