05 - Arrays
Lerne, wie man Sammlungen von Daten mithilfe von Arrays speichern und verwalten kann.
Mit Arrays kannst du mehrere Werte desselben Typs in einer einzigen Variable speichern. Stell dir einen Array als eine Reihe von Boxen vor, die jeweils einen Gegenstand beinhalten.
Arrays erstellen
Methode 1: Erst Deklarieren und dann Initialisieren
int[] numbers; // Deklarieren
numbers = new int[5]; // Array mit 5 Feldern erstellenMethode 2: Beides zusammen
int[] numbers = new int[5];Methode 3: Mit Anfangswerten
int[] numbers = {10, 20, 30, 40, 50};Sobald du ein Array erstellst, ist seine Größe unveränderbar. Du kannst später keine Elemente hinzufügen oder entfernen!
int[] inventory = new int[9]; // Immer genau 9 SlotsAuf Array-Elemente zugreifen
Arrays verwenden Index Nummern, beginnend bei 0:
String[] players = {"Alice", "Bob", "Charlie"};
System.out.println(players[0]); // "Alice"
System.out.println(players[1]); // "Bob"
System.out.println(players[2]); // "Charlie"Visuelle Darstellung
| Index | 0 | 1 | 2 |
|---|---|---|---|
| Wert | "Alice" | "Bob" | "Charlie" |
Array-Werte ändern
int[] health = {100, 80, 90};
health[1] = 60; // Ändert Bobs Leben auf 60
System.out.println(health[0]); // 100
System.out.println(health[1]); // 60
System.out.println(health[2]); // 90Array-Länge
Verwende .length um die Größe eines Arrays zu erhalten:
int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // 5Wie du siehst, sind hier keine Klammern! Es ist array.length, nicht array.length().
Arrays durchlaufen mit Schleifen
Verwendung einer For-Schleife
String[] items = {"Schwert", "Schild", "Trank"};
for (int i = 0; i < items.length; i++) {
System.out.println(items[i]);
}Verwendung einer verbesserten For-Schleife (For-Each)
String[] items = {"Schwert", "Schild", "Trank"};
for (String item : items) {
System.out.println(item);
}Die verbesserte For-Schleife ist simpler und sicherer, aber du kannst den Array nicht modifizieren oder den aktuellen Index kennen.
// Wenn du den Index brauchst
for (int i = 0; i < items.length; i++) {
System.out.println(i + ": " + items[i]);
}
// Wenn du nur die Werte brauchst
for (String item : items) {
System.out.println(item);
}Mehrdimensionale Arrays
Arrays können andere Arrays beinhalten, wodurch ein Raster erstellt wird:
int[][] grid = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(grid[0][0]); // 1
System.out.println(grid[1][2]); // 6
System.out.println(grid[2][1]); // 8Visuelle Darstellung
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 |
| 2 | 7 | 8 | 9 |
Durchlaufen von 2D-Arrays
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
for (int row = 0; row < grid.length; row++) {
for (int col = 0; col < grid[row].length; col++) {
System.out.print(grid[row][col] + " ");
}
System.out.println();
}Praktische Beispiele
System für das Spieler-Inventar
String[] inventory = new String[9]; // 9 hotbar slots
// Items hinzufügen
inventory[0] = "Diamant Schwert";
inventory[1] = "Schild";
inventory[8] = "Essem";
// Inventar ausgeben
for (int i = 0; i < inventory.length; i++) {
if (inventory[i] != null) {
System.out.println("Slot " + i + ": " + inventory[i]);
} else {
System.out.println("Slot " + i + ": Leer");
}
}Höchsten Punktestand finden
int[] scores = {45, 92, 67, 88, 55, 71};
int highest = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > highest) {
highest = scores[i];
}
}
System.out.println("Höchster score: " + highest);Durchschnitt berechnen
double[] temperatures = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;
for (double temp : temperatures) {
sum += temp;
}
double average = sum / temperatures.length;
System.out.println("Durchschnittliche Temperatur: " + average);Blockraster (2D Array)
String[][] terrain = new String[5][5];
// Mit Gras füllen
for (int x = 0; x < 5; x++) {
for (int z = 0; z < 5; z++) {
terrain[x][z] = "gras";
}
}
// Ein paar Steine platzieren
terrain[2][2] = "stein";
terrain[1][3] = "stein";
// Raster ausgeben
for (int x = 0; x < terrain.length; x++) {
for (int z = 0; z < terrain[x].length; z++) {
System.out.print(terrain[x][z] + " ");
}
System.out.println();
}Übliche Array-Operationen
Ein Array kopieren
int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();
// Oder manuell
int[] copy2 = new int[original.length];
for (int i = 0; i < original.length; i++) {
copy2[i] = original[i];
}Nach einem Wert suchen
String[] items = {"Schwert", "Schild", "Trank", "Bogen"};
String target = "Trank";
int foundIndex = -1;
for (int i = 0; i < items.length; i++) {
if (items[i].equals(target)) {
foundIndex = i;
break;
}
}
if (foundIndex != -1) {
System.out.println("Gefunden bei Index: " + foundIndex);
} else {
System.out.println("Nicht gefunden");
}Vorkommnisse zählen
String[] blocks = {"stein", "erde", "stein", "erde", "stein"};
String searchFor = "stein";
int count = 0;
for (String block : blocks) {
if (block.equals(searchFor)) {
count++;
}
}
System.out.println(searchFor + " taucht " + count + " mal auf");Array-Größenbeschränkungen
Arrays können weder wachsen noch schrumpfen. Wenn du Flexibilität brauchst, wirst du später etwas über ArrayList erfahren!
int[] numbers = new int[5];
// Du kannst kein 6. Element hinzufügen!
// Wenn du mehr Platz brauchst, erstelle einen neuen Array
int[] bigger = new int[10];
for (int i = 0; i < numbers.length; i++) {
bigger[i] = numbers[i];
}