Java / OOP ⏰ 00:00
Willkommen zurück

Bereit für die Prüfung?

Dieses Lernportal deckt alle 8 Prüfungsthemen der Fachinformatiker-Abschlussprüfung ab. Arbeite die Module a–h systematisch durch.

8
Lernmodule
18
OOP-Flashcards
8
Tracing-Quizze
15+
Lücken-Aufgaben

📋 Alle Prüfungsthemen

a) Ausdrücke, Operatoren, Datentypen
b) Struktogramm aus Programm erzeugen
c) Welche Ausgabe erscheint?
d) OOP-Begriffe erläutern
e) UML-Diagramm Begriffe kennen
f) UML aus Text erstellen / Fehler finden
g) Klassendiagramm → Code ergänzen
h) Struktogramm → Code ergänzen

💡 Empfohlene Reihenfolge

1. a) Ausdrücke – Basis für alles
2. d+e) OOP & UML – Begriffe lernen
3. b) Struktogramme – Diagramme verstehen
4. c) Code-Tracing – Ausgaben üben
5. f) UML Aufgaben – Fehler finden
6. g+h) Code ergänzen – alles zusammen

Modul a)

Ausdrücke & Grundlagen

Datentypen, Operatoren, Typumwandlung und Ausdruck-Auswertung – die Basis für alle anderen Themen.

Primitive Datentypen (Java)

TypGrößeWertebereichStandardwertBeispiel
byte8 Bit−128 … 1270byte b = 10;
short16 Bit−32 768 … 32 7670short s = 1000;
int32 Bit−2 147 483 648 … 2 147 483 6470int x = 42;
long64 Bit±9.2 × 10¹⁸0Llong l = 99L;
float32 Bit±3.4 × 10³⁸0.0ffloat f = 3.14f;
double64 Bit±1.8 × 10³⁰⁸0.0double d = 3.14;
boolean1 Bittrue / falsefalseboolean ok = true;
char16 Bit'' … '￿'''char c = 'A';
StringObjektbeliebige ZeichenkettenullString s = "Hi";

Operatoren & Priorität

Prioritätsregel (hoch → niedrig): ++/-- (unär) → * / %+ -< > <= >=== !=&&||?:= += -=
ArithmetikBedeutungBeispiel
+, -, *, /Grundrechenarten10 / 3 → 3
%Modulo (Rest)10 % 3 → 1
++xPrä-Inkrement (erst erhöhen)x=5; y=++x → x=6,y=6
x++Post-Inkrement (erst nutzen)x=5; y=x++ → x=6,y=5
+=, -=, *=Kombinierte Zuweisungx += 3 = x = x+3
Vergleich / LogikBedeutungErgebnis
==, !=Gleich / Ungleichboolean
<, >, <=, >=Vergleichsoperatorenboolean
&&Logisch UND (Kurzschluss)false, wenn 1. false
||Logisch ODER (Kurzschluss)true, wenn 1. true
!Logische Negation!true → false

Typumwandlung (Casting)

Implizite Konvertierung (automatisch)

1// Kleiner → Größer: kein Cast nötig 2int i = 42; 3long l = i; // OK 4double d = i; // OK → 42.0 5// Reihenfolge: byte→short→int→long→float→double

Expliziter Cast (erzwungen)

1// Größer → Kleiner: Cast-Operator nötig! 2double d = 9.99; 3int i = (int) d; // → 9 (Nachkomma weg!) 4int a = 7, b = 2; 5double r = (double) a / b; // → 3.5

Kontrollstrukturen

if / else if / else

1if (x > 0) { 2 System.out.println("positiv"); 3} else if (x == 0) { 4 System.out.println("null"); 5} else { 6 System.out.println("negativ"); 7}

switch-Anweisung

1switch (tag) { 2 case 1: System.out.println("Mo"); break; 3 case 2: System.out.println("Di"); break; 4 default: System.out.println("?"); 5}

for / for-each

1for (int i = 0; i < 5; i++) { ... } 2 3int[] arr = {1, 2, 3}; 4for (int x : arr) { 5 System.out.println(x); 6}

while / do-while

1while (n < 3) { n++; } // kopfgesteuert 2 3do { 4 System.out.println(n); 5 n++; 6} while (n < 3); // fußgesteuert

String-Methoden (häufig in Prüfungen)

MethodeBedeutungBeispiel
s.length()Anzahl Zeichen"Hallo".length() → 5
s.charAt(i)Zeichen an Index i"Hallo".charAt(1) → 'a'
s.substring(a,b)Teilstring von a bis b (exkl.)"Hallo".substring(1,3) → "al"
s.toUpperCase()Großbuchstaben"hi".toUpperCase() → "HI"
s.equals(t)Inhalt vergleichen (nicht ==!)"a".equals("a") → true
s.contains("x")Enthält Teilstring?"Hallo".contains("al") → true
s + tKonkatenation (auch mit Zahlen)"x=" + 5 → "x=5"

🧩 Übungen: Ausdrücke auswerten

Aufgabe: Wähle das korrekte Ergebnis des Java-Ausdrucks.
Aufgabe 1 / 6 – Ganzzahldivision & Modulo
int a = 17, b = 5;
System.out.println(a / b);
System.out.println(a % b);
Aufgabe 2 / 6 – Pre vs. Post-Inkrement
int x = 5;
int y = x++;
int z = ++x;
System.out.println(y + " " + z + " " + x);
Aufgabe 3 / 6 – Typumwandlung (Casting)
double d = 7.9;
int i = (int) d;
System.out.println(i);
Aufgabe 4 / 6 – String-Konkatenation
int a = 2, b = 3;
System.out.println("Summe: " + a + b);
System.out.println("Summe: " + (a + b));
Aufgabe 5 / 6 – Logische Operatoren
int x = 4;
boolean r = (x > 2) && (x % 2 == 0);
System.out.println(r);
Aufgabe 6 / 6 – Ternärer Operator
int n = 0;
String s = (n != 0) ? "nicht null" : "null";
System.out.println(s);
Modul b)

Struktogramme

Nassi-Shneiderman-Diagramme – visuelle Darstellung von Algorithmen. Lerne alle Grundelemente und übe Code → Struktogramm.

Grundelemente im Überblick

① Sequenz (Folge)

x = 5
y = x * 2
Ausgabe y

Anweisungen werden von oben nach unten ausgeführt.

② Bedingte Anweisung (if/else)

x > 0
WAHRAusgabe "positiv"
FALSCHAusgabe "negativ"

Trapezform zeigt die Bedingung. Links = WAHR, Rechts = FALSCH.

③ Zählschleife (for)

i=0..4
Schleifenkopf: i < 5; i++
Ausgabe i

Linker Balken = Schleifentyp. Bedingung oben im Körper.

④ While-Schleife (kopfgesteuert)

SOLANGE
Bedingung: n < 3
Ausgabe n
n = n + 1

Bedingung wird VOR jedem Durchlauf geprüft. Kann 0× laufen.

⑤ Do-While-Schleife (fußgesteuert)

MIND. 1×
Eingabe n
Ausgabe n
SOLANGE n < 0

Bedingung steht UNTEN. Körper wird mindestens 1× ausgeführt.

⑥ Fallunterscheidung (switch)

FALL: note
1Ausgabe "Sehr gut"
2Ausgabe "Gut"
3Ausgabe "Befr."
sonstAusgabe "Keine Note"

Jede Spalte = ein case. Die letzte Spalte = default.

⑦ Vollständiges Beispiel: Summe gerader Zahlen 1–10

summe = 0
i=1..10
Schleifenkopf: i <= 10; i++
i % 2 == 0
WAHRsumme = summe + i
FALSCH– (nichts)
Ausgabe summe

Berechnet 2+4+6+8+10 = 30. Zeigt Schachtelung: Schleife enthält Bedingung.

🧩 Übung: Code → Struktogramm-Lücken ausfüllen

Aufgabe: Sieh dir den Java-Code an und fülle die Lücken im Struktogramm darunter aus.
Strukt-Aufgabe 1 / 4 ⭐ Leicht
Java-Code
1int summe = 0; 2for (int i = 1; i <= 5; i++) { 3 summe = summe + i; 4} 5System.out.println(summe);
Struktogramm (Lücken ausfüllen)
summe =
i=1..
i <= 5; i++
summe = summe +
Ausgabe
Strukt-Aufgabe 2 / 4 ⭐⭐ Mittel
Java-Code
1int x = 10; 2while (x > 0) { 3 if (x % 2 == 0) { 4 System.out.println(x); 5 } 6 x = x - 2; 7}
Struktogramm (Lücken ausfüllen)
x =
SOLANGE
x >
x % 2 ==
WAHRAusgabe x
FALSCH
x = x -
Strukt-Aufgabe 3 / 4 ⭐⭐ Mittel
Java-Code
1int n; 2do { 3 n = scanner.nextInt(); 4} while (n < 1); 5System.out.println("Eingabe: " + n);
Welches Struktogramm-Element passt?
Strukt-Aufgabe 4 / 4 ⭐⭐⭐ Schwer
Java-Code
1for (int i=1; i<=3; i++) { 2 for (int j=1; j<=i; j++) { 3 System.out.print("*"); 4 } 5 System.out.println(); 6}
Struktogramm (Lücken ausfüllen)
i=1..
i<=3; i++
j=1..
j<=i; j++
Ausgabe ""
Ausgabe Zeilenumbruch
Modul c)

Code-Tracing – Welche Ausgabe erscheint?

Analysiere den Code Zeile für Zeile und trage die exakte Konsolenausgabe ein. Groß-/Kleinschreibung und Leerzeichen zählen!

💡 Tracing-Strategie

1. Variablen-Tabelle anlegen: Name | Typ | aktueller Wert
2. Zeile für Zeile durchgehen – bei jeder Zuweisung den Wert aktualisieren
3. Schleifen: Zähler mitführen, Bedingung vor jedem Durchlauf prüfen
4. Integer-Division: 7/2 = 3 (kein Rest), Modulo: 7%2 = 1
5. print = kein Zeilenumbruch, println = mit Zeilenumbruch

Aufgabe 1 / 8 ⭐ Leicht – for-Schleife
1int x = 1; 2for (int i = 0; i < 4; i++) { 3 x = x * 2; 4 System.out.println(x); 5}
Aufgabe 2 / 8 ⭐ Leicht – Division & Ternär
1int a = 10, b = 3; 2System.out.println(a / b); 3System.out.println(a % b); 4System.out.println(a > b ? "groesser" : "kleiner");
Aufgabe 3 / 8 ⭐⭐ Mittel – Array & for-each
1int[] arr = {3, 1, 4, 1, 5}; 2int sum = 0; 3for (int val : arr) { 4 if (val % 2 != 0) sum += val; 5} 6System.out.println("Summe: " + sum);
Aufgabe 4 / 8 ⭐⭐ Mittel – geschachtelte Schleifen
1for (int i = 1; i <= 3; i++) { 2 for (int j = 1; j <= i; j++) { 3 System.out.print("*"); 4 } 5 System.out.println(); 6}
Aufgabe 5 / 8 ⭐⭐ Mittel – String-Methoden
1String s = "Hallo"; 2System.out.println(s.length()); 3System.out.println(s.toUpperCase()); 4System.out.println(s.charAt(1)); 5System.out.println(s.substring(1, 4));
Aufgabe 6 / 8 ⭐⭐ Mittel – while & Post-Dekrement
1int i = 5; 2while (i > 0) { 3 System.out.println(i--); 4}
Aufgabe 7 / 8 ⭐⭐⭐ Schwer – String-Konkatenation & Casting
1int a = 5, b = 2; 2System.out.println(a + b); 3System.out.println("Wert: " + a + b); 4System.out.println("Wert: " + (a + b)); 5System.out.println((double) a / b);
Aufgabe 8 / 8 ⭐⭐⭐ Schwer – Methode & Schleife
1static int quadrat(int n) { 2 return n * n; 3} 4// In main(): 5int summe = 0; 6for (int i = 1; i <= 4; i++) { 7 if (i % 2 != 0) 8 summe += quadrat(i); 9} 10System.out.println("Ergebnis: " + summe);
Modul d)

OOP Begriffe

Klicke auf eine Karte, um sie umzudrehen. Lerne alle 18 Grundbegriffe der objektorientierten Programmierung.

OOP Grundlage
Klasse
→ klicken zum Aufdecken
Bauplan/Vorlage für Objekte. Definiert Attribute (Felder) und Methoden.
class Auto { String farbe; void fahren() {} }
OOP Grundlage
Objekt
→ klicken zum Aufdecken
Konkrete Instanz einer Klasse mit eigenen Attributwerten. Erstellt mit new.
Auto meinAuto = new Auto("rot");
OOP Prinzip
Vererbung
→ klicken zum Aufdecken
Kindklasse erbt Attribute und Methoden der Elternklasse (extends). Ermöglicht Wiederverwendung.
class ElektroAuto extends Auto { int akku; }
OOP Prinzip
Polymorphie
→ klicken zum Aufdecken
Gleicher Methodenname, unterschiedliches Verhalten je nach Objekt (via @Override). Eine Elternklassenreferenz kann Kindklassenobjekte halten.
Auto a = new ElektroAuto(); a.fahren();
OOP Prinzip
Kapselung
→ klicken zum Aufdecken
Interne Details verbergen. Attribute private, Zugriff nur über public Getter/Setter. Schützt Datenintegrität.
private int alter; public int getAlter() { return alter; }
OOP Prinzip
Abstraktion
→ klicken zum Aufdecken
Vereinfachung der Realität auf das Wesentliche. Komplexe Details werden hinter einfachen Schnittstellen verborgen.
Auto.fahren() – das WIE ist intern, das WAS ist extern.
Klassen-Typ
Abstrakte Klasse
→ klicken zum Aufdecken
Mit abstract deklariert. Kann NICHT instanziiert werden. Enthält abstrakte Methoden (ohne Körper), die Unterklassen implementieren müssen.
abstract class Form { abstract double flaeche(); }
Klassen-Typ
Interface
→ klicken zum Aufdecken
Rein abstrakte Schnittstelle (nur Methodensignaturen). Klasse kann mehrere Interfaces implementieren (implements). Kein Zustand.
interface Fahrbar { void fahren(); }
class Auto implements Fahrbar { ... }
Methoden
Konstruktor
→ klicken zum Aufdecken
Spezielle Methode mit Klassenname, kein Rückgabetyp. Wird bei new aufgerufen. Initialisiert Attribute. Kann überladen werden.
Auto(String farbe) { this.farbe = farbe; }
Schlüsselwort
this
→ klicken zum Aufdecken
Referenz auf das aktuelle Objekt. Unterscheidet lokale Parameter von Attributen gleichen Namens.
void setName(String name) { this.name = name; }
Schlüsselwort
super
→ klicken zum Aufdecken
Referenz auf die Elternklasse. super() ruft Elternkonstruktor auf. super.methode() ruft überschriebene Methode der Elternklasse auf.
class Hund extends Tier { Hund() { super("Hund"); } }
Methoden
Überschreiben (@Override)
→ klicken zum Aufdecken
Kindklasse ersetzt Implementierung einer geerbten Methode. Gleiche Signatur. @Override ist optional, aber empfohlen.
@Override public void fahren() { System.out.println("elektrisch"); }
Methoden
Überladen (Overloading)
→ klicken zum Aufdecken
Mehrere Methoden mit gleichem Namen, aber unterschiedlichen Parametern (Anzahl oder Typ). In derselben Klasse.
void print(int x) {}
void print(String s) {}
void print(int x, int y) {}
Modifikatoren
static
→ klicken zum Aufdecken
Gehört zur Klasse, nicht zum Objekt. Kann ohne Instanz aufgerufen werden. Klassenvariable/-methode.
static int anzahl = 0;
Auto.getAnzahl(); // kein new nötig
Sichtbarkeit
Zugriffsmodifikatoren
→ klicken zum Aufdecken
public: überall · private: nur eigene Klasse · protected: Klasse + Unterklassen · (kein): gleiche Package
private int x; // nur diese Klasse
public void zeige() {} // alle
Entwurf
Getter & Setter
→ klicken zum Aufdecken
Getter: liest ein private Attribut (getX()). Setter: schreibt ein private Attribut (setX(wert)), kann Validierung enthalten.
public String getName() { return name; }
public void setName(String n) { this.name = n; }
Konzept
Aggregation
→ klicken zum Aufdecken
„Hat-ein" Beziehung. Das Teil kann unabhängig existieren. Im UML: leere Raute (◇─) am Ganzen.
class Team { List<Person> mitglieder; }
// Person existiert auch ohne Team
Konzept
Komposition
→ klicken zum Aufdecken
Starke „Hat-ein" Beziehung. Das Teil kann NICHT unabhängig existieren – stirbt mit dem Ganzen. Im UML: ausgefüllte Raute (◆─).
class Haus { Raum zimmer; }
// Raum ohne Haus sinnlos
Modul e)

UML Begriffe

Unified Modeling Language – Notation, Beziehungstypen, Multiplizitäten und Klassendiagramm-Aufbau.

Aufbau eines UML-Klassendiagramms

Jede Klasse besteht aus 3 Bereichen:
«abstract» Fahrzeug
- marke: String
- baujahr: int
+ anzahl: int  (static=unterstrichen)
+ fahren(): void
+ getMarke(): String
# berechne(n: int): double
- intern(): void
+ = public - = private # = protected ~ = package

Beziehungstypen im Überblick

──▷
Vererbung
Volle Linie, offene Pfeilspitze (Dreieck). Kind → Eltern. Java: extends
- -▷
Realisierung
Gestrichelte Linie, offene Pfeilspitze. Klasse → Interface. Java: implements
────
Assoziation
Einfache Linie. „kennt" oder „nutzt". Optional mit Pfeil für Richtung.
◇───
Aggregation
Leere Raute am Ganzen. Teil kann ohne Ganzes existieren. (schwache Bindung)
◆───
Komposition
Ausgefüllte Raute am Ganzen. Teil existiert NICHT ohne Ganzes. (starke Bindung)
- - →
Abhängigkeit
Gestrichelte Linie mit Pfeil. Eine Klasse nutzt eine andere temporär (z.B. als Parameter).

Multiplizitäten (Kardinalitäten)

NotationBedeutungBeispiel
1Genau eine InstanzJeder Auftrag hat genau 1 Kunden
0..1Null oder eine InstanzPerson hat 0 oder 1 Führerschein
* oder 0..*Beliebig viele (auch keine)Kunde hat 0..* Bestellungen
1..*Mindestens eineTeam hat mindestens 1 Mitglied
2..5Feste SpanneAuto hat 2 bis 5 Türen

Vollständiges Beispiel-Diagramm (Vererbung + Interface)

«interface»Fahrbar
– keine Attribute –
+ fahren(): void
+ bremsen(): void
implements
(- -▷)
«abstract»Fahrzeug
- marke: String
# geschwindigkeit: int
+ fahren(): void
+ getMarke(): String
extends
(──▷)
Auto
- tueren: int
+ fahren(): void
+ getTueren(): int
Motorrad
- hatBeiwagen: boolean
+ fahren(): void

Schnellreferenz-Glossar

+ (public)
Von überall zugreifbar. Keine Einschränkung.
- (private)
Nur innerhalb der eigenen Klasse sichtbar.
# (protected)
Klasse und alle Unterklassen. Auch gleiche Package.
~ (package)
Nur Klassen im gleichen Package sichtbar.
Kursiv = abstrakt
Kursive Klassennamen oder Methoden = abstract.
Unterstrichen = static
Unterstrichene Attribute/Methoden = static.
«interface»
Stereotype für Interfaces im Klassendiagramm.
«abstract»
Stereotype für abstrakte Klassen.
Navigierbarkeit
Pfeilspitze zeigt, in welche Richtung zugegriffen werden kann.
Rollenname
Beschriftung einer Assoziation an der Pfeilspitze (z.B. „fahrer").
Attribut-Syntax
Sichtbarkeit name: Typ = Standardwert
Methoden-Syntax
Sichtbarkeit name(param: Typ): Rückgabetyp
Modul f)

UML Aufgaben

Aus einem Text ein UML-Diagramm ableiten und Fehler in vorhandenen Diagrammen erkennen.

Teil 1: Fehler im UML-Diagramm finden

Aufgabe: Betrachte das Diagramm und wähle, welche Aussage den Fehler korrekt beschreibt.
Fehler-Aufgabe 1 / 3 ⭐ Leicht

Das folgende Diagramm beschreibt: „Hund erbt von Tier". Finde den Fehler:

Hund
- name: String
+ bellen(): void
extends
← Fehler hier?
Tier
# alter: int
+ essen(): void
Fehler-Aufgabe 2 / 3 ⭐⭐ Mittel

Finde zwei Fehler in diesem Klassendiagramm:

Bankkonto
+ kontostand: double  ← ?
- inhaber: String
+ einzahlen(betrag):  ← ?
+ getKontostand(): double
Fehler-Aufgabe 3 / 3 ⭐⭐⭐ Schwer

Text: „Ein Haus besteht aus Räumen. Ein Raum kann ohne ein Haus nicht existieren. Die Multiplizität ist: 1 Haus hat 1 bis viele Räume."
Was ist am folgenden Diagramm falsch?

Haus
- adresse: String
+ getAdresse(): String
◇──
1       *
Raum
- groesse: double
+ getGroesse(): double

Teil 2: Aus Text ein UML-Diagramm ableiten

Aufgabe: Lies den Beschreibungstext und beantworte die Fragen zum korrekten UML-Diagramm.
Text→UML 1 / 3 ⭐ Leicht
Beschreibung: „Es gibt eine Klasse Tier mit dem privaten Attribut name (String) und der öffentlichen Methode essen() (kein Rückgabewert). Die Klasse Hund erbt von Tier und hat zusätzlich die Methode bellen()."

Frage: Welche UML-Notation ist für das Attribut name in der Klasse Tier korrekt?

Text→UML 2 / 3 ⭐⭐ Mittel
Beschreibung: „Eine Bibliothek verwaltet Bücher. Ein Buch gehört immer zu genau einer Bibliothek und kann nicht ohne sie existieren. Eine Bibliothek kann beliebig viele Bücher haben."

Welche Beziehung und Multiplizität ist korrekt?

Text→UML 3 / 3 ⭐⭐⭐ Schwer
Beschreibung: „Das Interface Druckbar hat die Methode drucken(). Die Klasse Dokument implementiert dieses Interface und hat zusätzlich das private Attribut inhalt (String) sowie die öffentliche Methode speichern(): boolean."

Welche Aussage über das korrekte UML-Diagramm ist falsch?

Modul g)

Klassendiagramm → Code ergänzen

Ein Klassendiagramm ist vorgegeben. Ergänze die fehlenden Zeilen im Java-Quelltext.

UML-Klassendiagramm
Person
- name: String
- alter: int
+ Person(name: String, alter: int)
+ getName(): String
+ getAlter(): int
+ setAlter(a: int): void
Java-Quelltext (Lücken ausfüllen)
1public class Person { 2 String name; 3 int alter; 4 5 public (String name, int alter) { 6 .name = name; 7 this.alter = alter; 8 } 9 10 public String getName() { 11 return ; 12 } 13 14 public int getAlter() { return alter; } 15 16 public void setAlter(int a) { 17 = a; 18 } 19}
UML-Klassendiagramm
«abstract»Tier
# name: String
+ Tier(name: String)
+ lautGeben(): void
+ getName(): String
▲ extends
Hund
- rasse: String
+ Hund(name: String, rasse: String)
+ lautGeben(): void
Java-Quelltext (Lücken ausfüllen)
1abstract class Tier { 2 protected String name; 3 public Tier(String name) { this.name = name; } 4 public abstract void lautGeben(); 5 public String getName() { return name; } 6} 7 8class Hund Tier { 9 private String rasse; 10 11 public Hund(String name, String rasse) { 12 ; 13 this.rasse = rasse; 14 } 15 16 17 public void lautGeben() { 18 System.out.println("Wuff!"); 19 } 20}
UML-Klassendiagramm
«interface»Berechenbar
– keine Attribute –
+ berechneFlaeche(): double
+ berechneUmfang(): double
▲ implements (- -▷)
Rechteck
- breite: double
- hoehe: double
+ Rechteck(b: double, h: double)
+ berechneFlaeche(): double
+ berechneUmfang(): double
Java-Quelltext (Lücken ausfüllen)
1 Berechenbar { 2 double berechneFlaeche(); 3 double berechneUmfang(); 4} 5 6class Rechteck Berechenbar { 7 private double breite, hoehe; 8 9 public Rechteck(double b, double h) { 10 breite = b; hoehe = h; 11 } 12 13 public double berechneFlaeche() { 14 return ; 15 } 16 17 public double berechneUmfang() { 18 return ; 19 } 20}
Modul h)

Struktogramm → Code ergänzen

Ein Struktogramm ist vorgegeben. Ergänze den fehlenden Java-Quelltext.

Struktogramm
summe = 0
i=1..n
Schleifenkopf: i <= n; i++
summe = summe + i
Ausgabe summe
Java-Code (Lücken ausfüllen)
1int summe = ; 2for (int i = ; i n; i++) { 3 summe = summe + ; 4} 5System.out.println();
Struktogramm
x = 100
SOLANGE
x > 1
x % 2 == 0
WAHRx = x / 2
FALSCHx = x * 3 + 1
Ausgabe x
Java-Code (Lücken ausfüllen)
1int x = ; 2while () { 3 if (x % 2 == ) { 4 x = x / ; 5 } else { 6 x = x * 3 + ; 7 } 8} 9System.out.println(x);
Struktogramm
MIND. 1×
Eingabe zahl
zahl < 0
WAHRAusgabe "Ungültig"
FALSCH– (nichts)
SOLANGE zahl < 0
Ausgabe "OK: " + zahl
Java-Code (Lücken ausfüllen)
1int zahl; 2 { 3 zahl = scanner.nextInt(); 4 if () { 5 System.out.println("Ungültig"); 6 } 7} while (); 8System.out.println("OK: " + );
Struktogramm
FALL: ampel
"rot"Ausgabe "Stop!"
"gelb"Ausgabe "Achtung!"
"gruen"Ausgabe "Fahren!"
sonstAusgabe "Fehler"
Java-Code (Lücken ausfüllen)
1switch () { 2 case "rot": 3 System.out.println("Stop!"); 4 ; 5 case "gelb": 6 System.out.println("Achtung!"); 7 break; 8 case "gruen": 9 System.out.println("Fahren!"); break; 10 : 11 System.out.println("Fehler"); 12}
Modul 05

Lückentext-Training

Ergänze die fehlenden Code-Stellen. Auf „Prüfen" klicken, um deine Antworten zu überprüfen.

Ergänze den Code für eine Klasse Form mit Unterklassen Kreis und Rechteck:

1abstract class Form { 2 abstract double flaeche(); 3} 4 5class Kreis Form { 6 double radius; 7 public double flaeche() { 8 return .PI * radius * radius; 9 } 10} 11 12class Rechteck extends Form { 13 double breite, hoehe; 14 public double flaeche() { 15 return ; 16 } 17}

Diese Methode soll die Summe aller geraden Zahlen von 1 bis n berechnen. Ergänze die fehlenden Teile:

1int summeGerade(int n) { 2 int summe = ; 3 for (int i = 1; ; i++) { 4 if (i % 2 == ) { 5 summe i; 6 } 7 } 8 return summe; 9}

Ergänze die Klasse Person mit Konstruktor und Getter:

1class Person { 2 private String name; 3 private int alter; 4 5 (String name, int alter) { 6 .name = name; 7 this.alter = alter; 8 } 9 10 public String getName() { 11 return ; 12 } 13}