1. java-hell.de
  2. Themen
  3. Programmieraufgaben
Thema 11 von 11

Java Programmieraufgaben – Challenges zum Üben

Schluss mit Lückentext: Bei den Challenges kombinierst du alles, was du bisher gelernt hast, zu kleinen Programmen – vom Steckbrief über den Mini-Rechner bis zum Interview-Klassiker FizzBuzz.

Die Übungen

Das lernst du in diesem Thema

  1. ⚔️ Challenge: Steckbrief
  2. ⚔️ Challenge: Zahlenreihe
  3. ⚔️ Challenge: Mini-Rechner
  4. ⚔️ Challenge: Notenspiegel
  5. ArrayList
  6. Try-Catch
  7. FizzBuzz
Übung 1 von 7

⚔️ Challenge: Steckbrief

Zeit, dein Wissen zu testen! Nutze alles was du bisher gelernt hast.

Erstelle Variablen für einen Steckbrief und gib sie so aus:

Name: Java-Dev
Alter: 20
Sprache: Java

Die Variablen sind schon da. Du musst nur die drei println-Zeilen ergänzen.

Startcode
void main() {
    String name = "Java-Dev";
    int alter = 20;
    String sprache = "Java";

    // Gib die drei Zeilen aus:
    // Name: Java-Dev
    // Alter: 20
    // Sprache: Java
}
Hintergrund
Warum Challenges?

Programmieren lernt man nicht durch Lesen, sondern durch aktives Problemlösen. Challenges kombinieren mehrere Konzepte — genau wie echte Programmieraufgaben.

In der Praxis wirst du nie nur eine Variable erstellen. Du wirst Variablen mit Ausgaben, Berechnungen und Bedingungen kombinieren. Diese Challenges bereiten dich darauf vor.

Übung 2 von 7

⚔️ Challenge: Zahlenreihe

Kombiniere Schleifen mit Bedingungen!

Gib die Zahlen 1 bis 20 aus, aber überspringe alle Zahlen die durch 3 teilbar sind.

Erwartete Ausgabe:
1 2 4 5 7 8 10 11 13 14 16 17 19 20

Tipp: Nutze continue; — das überspringt den Rest des Schleifendurchlaufs.

Startcode
void main() {
    for (int i = 1; i <= 20; i++) {
        // Ueberspringe Zahlen die durch 3 teilbar sind


        IO.print(i + " ");
    }
}
Hintergrund
break und continue

break; bricht die gesamte Schleife ab. continue; überspringt nur den aktuellen Durchlauf und springt zum nächsten.

In verschachtelten Schleifen wirken beide nur auf die innerste Schleife. Mit Labels kannst du auch äußere Schleifen ansprechen: outer: for (...) { ... break outer; }

Übung 3 von 7

⚔️ Challenge: Mini-Rechner

Schreibe eine Methode rechne, die zwei Zahlen und einen Operator bekommt und das Ergebnis zurückgibt.

Unterstützte Operatoren: +, -, *

Erwartete Ausgabe:

15
3
54
Startcode
int rechne(int a, int b, char op) {
    // Gib a+b, a-b oder a*b zurueck
    // je nach op ('+', '-' oder '*')
    return 0;
}

void main() {
    IO.println(rechne(10, 5, '+'));
    IO.println(rechne(10, 7, '-'));
    IO.println(rechne(6, 9, '*'));
}
Hintergrund
char — der Zeichentyp

char speichert ein einzelnes Unicode-Zeichen in 2 Bytes. Chars stehen in einfachen Anführungszeichen: 'A'. Strings in doppelten: "A".

Da char ein primitiver Typ ist, darfst du hier tatsächlich == zum Vergleichen nutzen. Das geht bei Strings nicht!

Übung 4 von 7

⚔️ Challenge: Notenspiegel

Erstelle eine Klasse Schueler mit:

  • Feld name (String)
  • Feld note (int)
  • Konstruktor der beides setzt
  • Methode bewertung() die zurückgibt: "bestanden" wenn note ≤ 4, sonst "durchgefallen"

Erwartete Ausgabe:

Anna: bestanden
Tom: durchgefallen
Startcode
void main() {
    Schueler a = new Schueler("Anna", 2);
    Schueler b = new Schueler("Tom", 5);
    IO.println(a.name + ": " + a.bewertung());
    IO.println(b.name + ": " + b.bewertung());
}

class Schueler {
    String name;
    int note;

    // Konstruktor
    // Methode bewertung() -> "bestanden" oder "durchgefallen"
}
Hintergrund
Kapselung (Encapsulation)

In echtem Java-Code wären die Felder private und nur über Getter/Setter zugänglich. Das heißt Kapselung — du kontrollierst, wie von außen auf die Daten zugegriffen wird.

Beispiel: Ein Setter für note könnte prüfen, ob der Wert zwischen 1 und 6 liegt. Ohne Kapselung könnte jemand s.note = -5; setzen.

Übung 5 von 7

ArrayList

Arrays haben eine feste Größe. Eine ArrayList kann wachsen:

ArrayList<String> liste = new ArrayList<>();
liste.add("Hallo");
liste.add("Welt");
liste.size(); // 2

Füge die Zahl 30 zur Liste hinzu, damit die Größe 3 wird.

Startcode
import java.util.ArrayList;

void main() {
    ArrayList<Integer> zahlen = new ArrayList<>();
    zahlen.add(10);
    zahlen.add(20);
    // Fuege 30 hinzu
    IO.println(zahlen.size());
}
Hintergrund
Generics und Wrapper-Klassen

ArrayList<Integer> — das <Integer> ist ein Generic. Es legt fest, welchen Typ die Liste enthält. Generics verhindern, dass du versehentlich falsche Typen einfügst.

Warum Integer statt int? Generics funktionieren nur mit Objekttypen. Integer ist die Wrapper-Klasse für int. Java konvertiert automatisch zwischen beiden (Auto-Boxing/Unboxing).

Übung 6 von 7

Try-Catch

Manchmal geht etwas schief — z.B. wenn du "abc" in eine Zahl umwandeln willst.

Mit try-catch fängst du den Fehler ab, statt dass dein Programm abstürzt:

try {
    // Code der schiefgehen kann
} catch (Exception e) {
    // Was bei Fehler passieren soll
}

Umschließe die fehlerhafte Zeile mit try-catch und gib im Fehlerfall Fehler! aus.

Startcode
void main() {
    String text = "abc";

    // Umschliesse die naechste Zeile mit try-catch
    // Bei Fehler: "Fehler!" ausgeben
    int zahl = Integer.parseInt(text);
    IO.println(zahl);
}
Hintergrund
Checked vs. Unchecked Exceptions

Java unterscheidet zwei Arten: Checked Exceptions (z.B. IOException) müssen explizit gefangen oder deklariert werden. Unchecked Exceptions (z.B. NumberFormatException, NullPointerException) nicht.

In der Praxis nutzen viele Frameworks nur Unchecked Exceptions. Die Checked-Exception-Pflicht in Java ist umstritten — andere Sprachen (Kotlin, C#) haben sie gar nicht erst eingeführt.

Übung 7 von 7

FizzBuzz

Die berühmteste Aufgabe in Vorstellungsgesprächen.

Gib die Zahlen 1 bis 15 aus, aber:

  • Teilbar durch 3 → Fizz
  • Teilbar durch 5 → Buzz
  • Teilbar durch 3 und 5 → FizzBuzz
  • Sonst → die Zahl

Tipp: Prüfe den FizzBuzz-Fall zuerst (teilbar durch 15)!

Tipp 2: % gibt den Rest. 15 % 3 == 0 heißt "15 ist durch 3 teilbar".

Startcode
void main() {
    for (int i = 1; i <= 15; i++) {
        // Deine if-else Kette hier

        IO.println(i);
    }
}
Hintergrund
FizzBuzz — mehr als eine Übung

FizzBuzz ist berühmt, weil es in Vorstellungsgesprächen zeigt, ob jemand grundlegende Programmierkonzepte beherrscht. Die Lösung erfordert Schleifen, Bedingungen und Modulo — und die richtige Reihenfolge der Prüfungen.

Fun Fact: Es gibt hunderte kreative Lösungen — mit Streams, Pattern Matching, oder sogar ohne if/else. Google mal "FizzBuzz Enterprise Edition" für die übertriebene Variante.

Genug gelesen. Jetzt du.

Im Tutorial schreibst du den Code selbst, drückst auf Ausführen und siehst sofort, ob dein Programm stimmt. Kein JDK, keine IDE, kein Bullshit.

Programmieraufgaben im Browser üben