Schleifen und Arrays
Was du heute lernst:
- Die verschiedenen Schleifentypen (for, while, do-while) situationsgerecht auswählen und anwenden.
- Daten in Arrays strukturieren und effizient über Indizes darauf zugreifen.
- Algorithmen entwickeln, die Datensammlungen automatisiert verarbeiten.
Schleifen
Programme gewinnen ihre Mächtigkeit vor allem durch zwei Konzepte: Die Fähigkeit, Aufgaben milliardenfach zu wiederholen (Schleifen), und die Möglichkeit, große Mengen zusammengehöriger Daten effizient zu verwalten (Arrays).
Schleifen (Loops) im Vergleich
| Schleifentyp | Besonderheit | Typischer Einsatzfall |
|---|---|---|
for | Zählergesteuert | Bekannte Anzahl an Wiederholungen. |
for-each | Iteratorgesteuert | Durchlaufen von Arrays oder Sammlungen. |
while | Kopfgesteuert | Wiederholung solange Bedingung wahr ist. |
do-while | Fußgesteuert | Codeblock wird mindestens einmal ausgeführt. |
Code-Beispiele der Schleifen
for-Schleife
Ideal für eine feste Anzahl von Wiederholungen.
for (initialisierung; bedingung; aktualisierung) {
// Code, der wiederholt ausgeführt wird
}
Erweiterte for-Schleife (for-each Loop)
Vereinfacht das Iterieren über Arrays. Liest jedes Element einmal aus.
for (Typ elementVariable : sammlung) {
// Code, der für jedes Element ausgeführt wird
}
while-Schleife
Die Bedingung wird vor jeder Ausführung des Codeblocks geprüft.
while (bedingung) {
// Code, der wiederholt ausgeführt wird
}
do-while-Schleife
Der Codeblock wird mindestens einmal ausgeführt, da die Bedingung nach der Ausführung geprüft wird.
do {
// Code, der mindestens einmal ausgeführt wird
} while (bedingung);
Datenstrukturen
Arrays
Arrays sind geordnete, gleichgroße Sammlungen von Elementen desselben Datentyps. Sie haben eine feste Größe, die bei der Initialisierung festgelegt wird.
Deklaration und Initialisierung
// Deklaration
int[] zahlen;
String[] namen;
// Initialisierung mit fester Größe (Standardwerte)
zahlen = new int[5]; // Array für 5 ganze Zahlen, initialisiert mit 0
// Deklaration und Initialisierung mit Werten
String[] fruechte = {"Apfel", "Banane", "Kirsche"};
double[] werte = new double[]{1.1, 2.2, 3.3};
Zugriff auf Array-Elemente
Elemente werden über ihren Index angesprochen, der bei 0 beginnt.
int erstesElement = zahlen[0];
fruechte[1] = "Birne"; // Ändert das zweite Element
int anzahlFruechte = fruechte.length; // Länge des Arrays
Mehrdimensionale Arrays
Arrays von Arrays, oft verwendet zur Darstellung von Matrizen oder Tabellen.
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int element = matrix[1][2]; // Zugriff auf das Element in der 2. Zeile, 3. Spalte (Wert ist 6)
Praxisbeispiel
public class SchleifenUndArrays {
public static void main(String[] args) {
// Beispiel: Array von Noten und for-Schleife
int[] noten = {2, 1, 3, 2, 4, 1, 5};
int summeNoten = 0;
System.out.println("Alle Noten:");
for (int i = 0; i < noten.length; i++) {
System.out.println("Note an Index " + i + ": " + noten[i]);
summeNoten += noten[i];
}
System.out.println("Durchschnittsnote: " + (double) summeNoten / noten.length);
System.out.println("\nNoten über 2.0 (for-each-Schleife):");
for (int note : noten) {
if (note <= 2) {
System.out.println(note);
}
}
// Beispiel: while-Schleife mit Countdown
int countdown = 3;
System.out.println("\nCountdown:");
while (countdown > 0) {
System.out.println(countdown + "...");
countdown--;
}
System.out.println("Start!");
// Beispiel: do-while-Schleife (Eingabevalidierung, hier simuliert)
boolean inputGueltig = false;
int versuch = 0;
do {
versuch++;
System.out.println("\nVersuch " + versuch + ": Eingabe prüfen...");
if (versuch == 2) { // Simulieren einer gültigen Eingabe im 2. Versuch
inputGueltig = true;
}
} while (!inputGueltig && versuch < 3);
if (inputGueltig) {
System.out.println("Eingabe erfolgreich nach " + versuch + " Versuchen.");
} else {
System.out.println("Eingabe fehlgeschlagen.");
}
}
}
Offene Fragen / Vertiefung
- Welche Vor- und Nachteile haben die verschiedenen Schleifentypen (
for,while,do-while,for-each) und wann sollte man welche bevorzugt einsetzen? - Wie können Arrays dynamisch in ihrer Größe angepasst werden (Stichwort:
ArrayList)? - Welche Alternativen zu Arrays gibt es in Java für die Speicherung von Datensammlungen (z.B.
List,Set,Map) und wann sind diese sinnvoller? - Wie geht man mit dem Zugriff auf Array-Elemente um, wenn der Index außerhalb der Array-Grenzen liegt (
ArrayIndexOutOfBoundsException)? - Untersuche die Verwendung von Arrays mit Referenzdatentypen (z.B. ein Array von
String-Objekten oder eigenen Klassenobjekten).
Übungsaufgabe: Schleifen und Arrays in Java anwenden
Aufgabenstellung:
- Erstelle ein Java-Programm, das ein Array von 5 Ganzzahlen (
int[] zahlen = {10, 25, 12, 30, 15};) deklariert und initialisiert. - Gib alle Elemente des Arrays mit einer
for-Schleife auf der Konsole aus. - Verwende eine erweiterte
for-Schleife (for-each), um die Summe aller geraden Zahlen in diesem Array zu berechnen und das Ergebnis auszugeben. - Implementiere eine
while-Schleife, die einen Countdown von 10 bis 1 auf der Konsole anzeigt.
Hinweise zur Lösung: Achte auf korrekte Array-Deklaration und -Initialisierung. Für die Summe der geraden Zahlen verwende den Modulo-Operator (%). Stelle sicher, dass die Schleifen korrekt terminiert werden und keine Endlosschleifen entstehen.
Schwierigkeitsgrad: mittel
Erwartete Bearbeitungszeit: 45 Minuten
Meine Java-Schleifenkompetenz:
- Ich beherrsche verschiedene Schleifentypen in Java und wähle die passende für jede Programmieraufgabe.
- Ich arbeite sicher mit Arrays und kann deren Elemente effizient durchlaufen und manipulieren.
- Ich verstehe die Unterschiede zwischen for-, while- und do-while-Schleifen in der Praxis.
💡 Profi-Tipp: Optimiere Schleifenstrukturen, um deinen Code lesbarer und performanter zu gestalten.