Hytale Modding
Java Grundlagen

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 erstellen

Methode 2: Beides zusammen

int[] numbers = new int[5];

Methode 3: Mit Anfangswerten

int[] numbers = {10, 20, 30, 40, 50};
Array Größe

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 Slots

Auf 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

Index012
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]); // 90

Array-Länge

Verwende .length um die Größe eines Arrays zu erhalten:

int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // 5
'length' ist keine Methode

Wie 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);
}
Verbesserte For-Schleife

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]); // 8

Visuelle Darstellung

012
0123
1456
2789

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

Unveränderbare Größe

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];
}