SemaTrain Logo Ein Fachportal von SemaTrain

Konsolenanwendung (Mini-Projekt)

Sie setzen das Gelernte zusammen: EingabeLogikAusgabe. Eine kleine Java-Konsolenanwendung im SemaTrain-Kontext.

Hinweis: Werte/Regeln sind Beispieldaten – Fokus liegt auf Struktur & Logik.

Java Grundlagen Schulung – Kursbezug

Dieses Kapitel ist Teil des Lernpfads zur Java Grundlagen Schulung. Fokus: kleines, komplettes Programm (Eingabe → Verarbeitung → Ausgabe).

Hinweis: Regeln/Preise sind Beispielwerte – wichtig ist die Struktur.

Ziel dieses Kapitels: Sie bauen eine kleine Java-App, die Eingaben liest, Entscheidungen trifft, Berechnungen macht und am Ende sauber ausgibt.

Worum geht’s?

Lehr-/Lernziele

Nach diesem Kapitel können Sie …

Das Grundmuster (Input → Process → Output)

Merke: Input → Process → Output (Java)
// 1) Input: Werte einlesen
// 2) Process: Regeln/Berechnungen
// 3) Output: Ergebnisse ausgeben

Eingaben lesen mit Scanner

Tipp: Nach nextInt()/nextDouble() einmal nextLine() konsumieren, sonst „verschluckt“ Java Zeilenumbrüche.

Scanner: String + int lesen (Java)
import java.util.Scanner;

public class ScannerBasics {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Name: ");
    String name = sc.nextLine();

    System.out.print("Dauer (Tage): ");
    int tage = sc.nextInt();
    sc.nextLine(); // Zeilenumbruch konsumieren

    System.out.println("Hallo " + name + ", Dauer: " + tage + " Tage");
    sc.close();
  }
}

Mini-App: Kurs-Konfigurator (Beispiel)

Dieses Beispiel zeigt die Bausteine aus den Lernzielen: (LZ1) Input/Output, (LZ2) Validierung, (LZ3) Logik (Bedingungen/Schleife).

Beispiel: Kurs-Konfigurator (Input → Process → Output) (Java)
import java.util.Scanner;

public class KursKonfiguratorBeispiel {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Kursname: ");
    String kursName = sc.nextLine().trim();

    System.out.print("Format (Online/Praesenz): ");
    String format = sc.nextLine().trim();

    System.out.print("Ort (nur Praesenz, sonst leer): ");
    String ort = sc.nextLine().trim();

    System.out.print("Dauer in Tagen (1-10): ");
    int dauer = sc.nextInt();

    System.out.print("Preis in Euro (Beispiel): ");
    double preis = sc.nextDouble();

    if (dauer < 1 || dauer > 10) {
      System.out.println("Ungültige Dauer. Bitte 1 bis 10 eingeben.");
      sc.close();
      return;
    }

    boolean istOnline = format.equalsIgnoreCase("Online");
    String ausgabeOrt = istOnline ? "remote" : (ort.isEmpty() ? "(bitte Ort angeben)" : ort);

    // Beispiel-Regel: Online & dauer >= 3 -> 10% Rabatt
    double rabatt = (istOnline && dauer >= 3) ? 0.10 : 0.0;
    double endpreis = preis * (1 - rabatt);

    System.out.println("\n--- Zusammenfassung ---");
    System.out.println("Kurs: " + kursName);
    System.out.println("Format: " + (istOnline ? "Online" : "Praesenz") + " | Ort: " + ausgabeOrt);
    System.out.println("Dauer: " + dauer + " Tage");
    System.out.println("Preis (Beispiel): " + endpreis + " €");

    System.out.println("\nTagesplan:");
    for (int tag = 1; tag <= dauer; tag++) {
      System.out.println("Tag " + tag + ": Inhalte & Übungen");
    }

    sc.close();
  }
}

Praxisaufgabe (Mini)

Beitrag zu den Lehr-/Lernzielen: LZ1 (I/O & Struktur) · LZ2 (Validierung) · LZ3 (Regeln/Logik)

  1. Lesen Sie ein: kursName, format, dauer, preis. (LZ1)
  2. Validieren Sie: dauer muss zwischen 1 und 10 liegen (sonst Hinweis & Abbruch). (LZ2)
  3. Wenn Online & dauer >= 3: 10% Rabatt berechnen. (LZ3)
  4. Geben Sie eine kompakte Zusammenfassung aus. (LZ1)
Lösung anzeigen
Lösung: Praxis (Validierung + Rabatt + Ausgabe) (Java)
import java.util.Scanner;

public class KursPraxis {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Kursname: ");
    String kursName = sc.nextLine().trim();

    System.out.print("Format (Online/Praesenz): ");
    String format = sc.nextLine().trim();

    System.out.print("Dauer (1-10): ");
    int dauer = sc.nextInt();

    System.out.print("Preis (Beispiel): ");
    double preis = sc.nextDouble();

    if (dauer < 1 || dauer > 10) {
      System.out.println("Ungültige Dauer. Bitte 1 bis 10 eingeben.");
      sc.close();
      return;
    }

    boolean istOnline = format.equalsIgnoreCase("Online");
    double rabatt = (istOnline && dauer >= 3) ? 0.10 : 0.0;
    double endpreis = preis * (1 - rabatt);

    System.out.println("\nKurs: " + kursName +
      " | Format: " + (istOnline ? "Online" : "Praesenz") +
      " | Dauer: " + dauer + " Tage" +
      " | Preis (Beispiel): " + endpreis + " €");

    sc.close();
  }
}

Kurz-Takeaways

Quiz: Konsolenanwendung (Lehr-/Lernziele Check)

1. (LZ1) Was beschreibt das Muster „Input → Process → Output“ am besten?

2. (LZ1) Wofür wird Scanner in einer Konsolenanwendung typischerweise verwendet?

3. (LZ2) Warum ist Validierung (z.B. Dauer 1–10) wichtig?

4. (LZ3) Welche Aussage zu if/else ist korrekt?

Praxisaufgabe

Mini-Projekt: „Kurs-Checker“ (Eingabe → Regeln → Ausgabe)

Beitrag zu den Lehr-/Lernzielen: LZ1 (I/O & Struktur) & LZ2 (Validierung) & LZ3 (Regeln/Logik).

Sie bauen eine Konsolen-App, die Kursdaten abfragt, prüft und eine Ausgabe erzeugt.

Lösung anzeigen
Lösung: Kurs-Checker (Java)
import java.util.Scanner;

public class KursChecker {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Kursname: ");
    String kursName = sc.nextLine().trim();

    System.out.print("Format (Online/Praesenz): ");
    String format = sc.nextLine().trim();

    System.out.print("Dauer (1-10): ");
    int dauer = sc.nextInt();

    System.out.print("Preis (Beispiel): ");
    double preis = sc.nextDouble();

    if (dauer < 1 || dauer > 10) {
      System.out.println("Fehler: Dauer muss zwischen 1 und 10 liegen.");
      sc.close();
      return;
    }

    boolean istOnline = format.equalsIgnoreCase("Online");
    double rabatt = (istOnline && dauer >= 3) ? 0.10 : 0.0;
    double endpreis = preis * (1 - rabatt);

    System.out.println("\nKurs: " + kursName);
    System.out.println("Format: " + (istOnline ? "Online" : "Praesenz"));
    System.out.println("Dauer: " + dauer + " Tage");
    System.out.println("Preis (Beispiel): " + endpreis + " €");

    for (int tag = 1; tag <= dauer; tag++) {
      System.out.println("Tag " + tag + ": Inhalte & Übungen");
    }

    sc.close();
  }
}