Update of exercises

main
Thomas Smits 2024-11-11 15:11:31 +01:00
parent e22abf05db
commit ac63d7353e
200 changed files with 4533 additions and 156 deletions

View File

@ -1,6 +1,6 @@
# Abstrakte Klassen # Abstrakte Klassen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten. Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten.

View File

@ -0,0 +1,5 @@
# Lösung: Abstrakte Klassen
Musterlösung:
[pr2.interfaces.abstrakte_klassen_s](../../solutions/src/main/java/pr2/interfaces/abstrakte_klassen_s/)

View File

@ -1,6 +1,6 @@
# Abstrakte Klasse # Abstrakte Klasse
## Lernziel ## Lernziel
[Musterlösung](solution/)
Abstrakte Klasse verwenden. Abstrakte Klasse verwenden.

View File

@ -0,0 +1,5 @@
# Lösung: Abstrakte Klasse
Musterlösung:
[pr2.interfaces.abstrakt_form](../../solutions/src/main/java/pr2/interfaces/abstrakt_form/)

View File

@ -1,6 +1,6 @@
# String in Großbuchstaben umwandeln # String in Großbuchstaben umwandeln
## Lernziel ## Lernziel
[Musterlösung](solution/)
* Daten von der Kommandozeile lesen. * Daten von der Kommandozeile lesen.

View File

@ -0,0 +1,4 @@
# Lösung: String in Großbuchstaben umwandeln
[pr2.auffrischung.grossmacher](../../solutions/src/main/java/pr2/auffrischung/grossmacher)

View File

@ -1,6 +1,6 @@
# Labeled Break # Labeled Break
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein labeled break verwenden. Ein labeled break verwenden.

View File

@ -0,0 +1,4 @@
# Lösung: Labeled Break
[pr2.auffrischung.labeled_break](../../solutions/src/main/java/pr2/auffrischung/labeled_break)

View File

@ -1,6 +1,6 @@
# Passwortbewertung # Passwortbewertung
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einfache String-Verarbeitung. Einfache String-Verarbeitung.

View File

@ -0,0 +1,4 @@
# Lösung: Passwortbewertung
[pr2.auffrischung.password](../../solutions/src/main/java/pr2/auffrischung/password)

View File

@ -1,6 +1,6 @@
# printf mit Formatstring # printf mit Formatstring
## Lernziel ## Lernziel
[Musterlösung](solution/)
Formatierung mit Formatstrings. Formatierung mit Formatstrings.

View File

@ -0,0 +1,4 @@
# Lösung: printf mit Formatstring
[pr2.auffrischung.printf](../../solutions/src/main/java/pr2/auffrischung/printf)

View File

@ -1,6 +1,6 @@
# Maximum in einem Array suchen # Maximum in einem Array suchen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Über Arrays iterieren. Über Arrays iterieren.

View File

@ -0,0 +1,4 @@
# Lösung: Maximum in einem Array suchen
[pr2.auffrischung.suchemax](../../solutions/src/main/java/pr2/auffrischung/suchemax)

View File

@ -1,6 +1,6 @@
# Taschenrechner # Taschenrechner
## Lernziel ## Lernziel
[Musterlösung](solution/)
`case` verwenden. `case` verwenden.

View File

@ -0,0 +1,4 @@
# Lösung: Taschenrechner
[pr2.auffrischung.taschenrechner](../../solutions/src/main/java/pr2/auffrischung/taschenrechner)

View File

@ -1,6 +1,6 @@
# Ausnahmen testen # Ausnahmen testen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Bei einer gegebenen Klasse Testfälle mit JUnit schreiben, die auf das Werfen von Ausnahmen testen. Bei einer gegebenen Klasse Testfälle mit JUnit schreiben, die auf das Werfen von Ausnahmen testen.

View File

@ -0,0 +1,5 @@
# Lösung: Ausnahmen testen
Musterlösung:
[pr2.exceptions.ausnahmen_testen](../../solutions/src/main/java/pr2/exceptions/ausnahmen_testen/)

View File

@ -1,6 +1,6 @@
# Eigene Ausnahmen schreiben und an entsprechender Stelle werfen # Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen. Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
Musterlösung:
[pr2.exceptions.eigene_ausnahme](../../solutions/src/main/java/pr2/exceptions/eigene_ausnahme/)

View File

@ -1,6 +1,6 @@
# Eigene Exception schreiben # Eigene Exception schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eigene Exceptions entwerfen und verwenden. Eigene Exceptions entwerfen und verwenden.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Exception schreiben
Musterlösung:
[pr2.exceptions.fakultaet](../../solutions/src/main/java/pr2/exceptions/fakultaet/)

View File

@ -1,6 +1,6 @@
# Handle-or-Declare-Regel anwenden # Handle-or-Declare-Regel anwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen. In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen.

View File

@ -0,0 +1,5 @@
# Lösung: Handle-or-Declare-Regel anwenden
Musterlösung:
[pr2.exceptions.handle_or_declare](../../solutions/src/main/java/pr2/exceptions/handle_or_declare/)

View File

@ -1,6 +1,6 @@
# Ausnahmen mit `try` und `catch` behandeln. # Ausnahmen mit `try` und `catch` behandeln.
## Lernziel ## Lernziel
[Musterlösung](solution/)
Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln. Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln.

View File

@ -0,0 +1,5 @@
# Lösung: Ausnahmen mit `try` und `catch` behandeln.
Musterlösung:
[pr2.exceptions.try_catch](../../solutions/src/main/java/pr2/exceptions/try_catch/)

View File

@ -1,6 +1,6 @@
# Java-Coding-Standard anwenden # Java-Coding-Standard anwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren. Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.

View File

@ -0,0 +1,4 @@
# Lösung: Java-Coding-Standard anwenden
[pr2.intro.coding_standard](../../solutions/src/main/java/pr2/intro/coding_standard/)

View File

@ -1,6 +1,6 @@
# JavaDoc schreiben # JavaDoc schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen. Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.

View File

@ -0,0 +1,4 @@
# Lösung: JavaDoc schreiben
[pr2.intro.javadoc](../../solutions/src/main/java/pr2/intro/javadoc/)

View File

@ -1,6 +1,6 @@
# Klasse mit JUnit testen # Klasse mit JUnit testen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen JUnit-Test für eine gegebene Klasse schreiben. Einen JUnit-Test für eine gegebene Klasse schreiben.

View File

@ -0,0 +1,4 @@
# Lösung: Klasse mit JUnit testen
Gehen Sie in das Paket [pr2.intro.junit_faculty](../../solutions/src/main/java/pr2/intro/junit_faculty/).

View File

@ -1,6 +1,6 @@
# Eigene Enumeration schreiben und verwenden # Eigene Enumeration schreiben und verwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen. Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Enumeration schreiben und verwenden
Musterlösung:
[pr2.enums.eigene](../../solutions/src/main/java/pr2/enums/eigene/)

View File

@ -1,6 +1,6 @@
# Enumeration schreiben # Enumeration schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen. Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Enumeration schreiben
Musterlösung:
[pr2.enums.filme](../../solutions/src/main/java/pr2/enums/filme/)

View File

@ -1,6 +1,6 @@
# Singleton-Eigenschaft von Enumerationen # Singleton-Eigenschaft von Enumerationen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Die Singleton-Eigenschaft von Enumerationen verstehen. Die Singleton-Eigenschaft von Enumerationen verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Singleton-Eigenschaft von Enumerationen
Musterlösung:
[pr2.enums.singleton](../../solutions/src/main/java/pr2/enums/singleton/)

View File

@ -1,6 +1,6 @@
# Assignment: Stein, Papier, Schere, Echse, Spock # Assignment: Stein, Papier, Schere, Echse, Spock
## Lernziel ## Lernziel
[Musterlösung](solution/)
Mit Enumerationen arbeiten. Mit Enumerationen arbeiten.

View File

@ -0,0 +1,5 @@
# Lösung: Stein, Papier, Schere, Echse, Spock
Musterlösung:
[pr2.enums.schnick](../../solutions/src/main/java/pr2/enums/schnick).

View File

@ -1,6 +1,6 @@
# Comparable implementieren # Comparable implementieren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Klasse "comparable" machen. Klasse "comparable" machen.

View File

@ -0,0 +1,5 @@
# Lösung: Comparable implementieren
Musterlösung:
[pr2.interfaces.comparable_student](../../solutions/src/main/java/pr2/interfaces/comparable_student/)

View File

@ -1,6 +1,6 @@
# Interface Stack entwerfen # Interface Stack entwerfen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein Interface entwerfen und dieses dann implementieren. Ein Interface entwerfen und dieses dann implementieren.

View File

@ -0,0 +1,5 @@
# Lösung: Interface Stack entwerfen
Musterlösung:
[pr2.interfaces.stack](../../solutions/src/main/java/pr2/interfaces/stack/)

View File

@ -1,6 +1,6 @@
# Interface: Uebersetzer # Interface: Uebersetzer
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein Interface implementieren. Ein Interface implementieren.

View File

@ -0,0 +1,5 @@
# Lösung: Interface: Uebersetzer
Musterlösung:
[pr2.interfaces.uebersetzer](../../solutions/src/main/java/pr2/interfaces/uebersetzer/)

View File

@ -1,6 +1,6 @@
# Interfaces anwenden und entwerfen # Interfaces anwenden und entwerfen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein vorhandenes Interface implementieren und ein eigenes Interface programmieren. Klassen schreiben, die mehrere Interfaces implementieren. Die Kollision von gleichnamigen Interface-Methoden und deren Konsequenzen verstehen. Ein vorhandenes Interface implementieren und ein eigenes Interface programmieren. Klassen schreiben, die mehrere Interfaces implementieren. Die Kollision von gleichnamigen Interface-Methoden und deren Konsequenzen verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Interfaces anwenden und entwerfen
Musterlösung:
[pr2.interfaces.interfaces_s](../../solutions/src/main/java/pr2/interfaces/interfaces_s/)

View File

@ -1,6 +1,6 @@
# Deep-Copy mit `clone()` # Deep-Copy mit `clone()`
## Lernziel ## Lernziel
[Musterlösung](solution/)
Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen. Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen.

View File

@ -0,0 +1,5 @@
# Lösung: Deep-Copy mit `clone()`
Musterlösung:
[pr2.object.clone_alien](../../solutions/src/main/java/pr2/object/clone_alien/)

View File

@ -1,6 +1,6 @@
# Clone # Clone
## Lernziel ## Lernziel
[Musterlösung](solution/)
Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen. Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen.

View File

@ -0,0 +1,5 @@
# Lösung: Clone
Musterlösung:
[pr2.object.clone_person](../../solutions/src/main/java/pr2/object/clone_person)

View File

@ -1,6 +1,6 @@
# `equals()` und `hashCode()` implementieren und nutzen # `equals()` und `hashCode()` implementieren und nutzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen. Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen.

View File

@ -0,0 +1,5 @@
# Lösung: `equals()` und `hashCode()` implementieren und nutzen
Musterlösung:
[pr2.object.equals_hashcode](../../solutions/src/main/java/pr2/object/equals_hashcode/)

View File

@ -1,6 +1,6 @@
# equals und hashCode # equals und hashCode
## Lernziel ## Lernziel
[Musterlösung](solution/)
Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen. Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen.

View File

@ -0,0 +1,5 @@
# Lösung: equals und hashCode
Musterlösung:
[pr2.object.equals_person](../../solutions/src/main/java/pr2/object/equals_person)

View File

@ -1,6 +1,6 @@
# `toString()`-Methode implementieren # `toString()`-Methode implementieren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Klassen mit einer `toString()`-Methode versehen und diese gegenseitig nutzen. Klassen mit einer `toString()`-Methode versehen und diese gegenseitig nutzen.

View File

@ -0,0 +1,5 @@
# Lösung: `toString()`-Methode implementieren
Musterlösung:
[pr2.object.tostring](../../solutions/src/main/java/pr2/object/tostring/).

View File

@ -1,6 +1,6 @@
# Optimierung bei Integer # Optimierung bei Integer
## Lernziel ## Lernziel
[Musterlösung](solution/)
Wrapper-Klassen und deren Optimierungen verstehen. Wrapper-Klassen und deren Optimierungen verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Optimierung bei Integer
Musterlösung:
[pr2.object.wrapper_boxsearch](../../solutions/src/main/java/pr2/object/wrapper_boxsearch/).

View File

@ -1,6 +1,6 @@
# Methoden der Wrapper-Klassen # Methoden der Wrapper-Klassen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Wrapper-Klassen nutzen, um Zahlen umzuwandeln. Wrapper-Klassen nutzen, um Zahlen umzuwandeln.

View File

@ -0,0 +1,5 @@
# Lösung: Methoden der Wrapper-Klassen
Musterlösung:
[pr2.object.wrapper_umwandler](../../solutions/src/main/java/pr2/object/wrapper_umwandler/).

View File

@ -1,6 +1,6 @@
# Information-Hiding einer Klasse verbessern # Information-Hiding einer Klasse verbessern
## Lernziel ## Lernziel
[Musterlösung](solution/)
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren. Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.

View File

@ -0,0 +1,4 @@
# Lösung: Information-Hiding einer Klasse verbessern
[pr2.strukturierung.information_hiding](../../solutions/src/main/java/pr2/strukturierung/information_hiding/)

View File

@ -1,6 +1,6 @@
# Vorhandene Bibliotheken als JAR einbinden # Vorhandene Bibliotheken als JAR einbinden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden. Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.

View File

@ -1,6 +1,6 @@
# Final anwenden # Final anwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Das Schlüsselwort `final` in seinen verschiedenen Bedeutungen kennenlernen und syntaktisch an die richtigen Stellen schreiben. Das Schlüsselwort `final` in seinen verschiedenen Bedeutungen kennenlernen und syntaktisch an die richtigen Stellen schreiben.

View File

@ -0,0 +1,5 @@
# Lösung: Final anwenden
Musterlösung:
[pr2.vererbung.finals](../../solutions/src/main/java/pr2/vererbung/finals/)

View File

@ -1,6 +1,6 @@
# Figur und Rechteck # Figur und Rechteck
## Lernziel ## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen. Vererbung sinnvoll einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Figur und Rechteck
Musterlösung:
[pr2.vererbung.geometrie1](../../solutions/src/main/java/pr2/vererbung/geometrie1/)

View File

@ -1,6 +1,6 @@
# Figur erweitern # Figur erweitern
## Lernziel ## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen. Vererbung sinnvoll einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Figur erweitern
Musterlösung:
[pr2.vererbung.geometrie2](../../solutions/src/main/java/pr2/vererbung/geometrie2/)

View File

@ -1,6 +1,6 @@
# Figur noch einmal erweitern # Figur noch einmal erweitern
## Lernziel ## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen. Vererbung sinnvoll einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Figur noch einmal erweitern
Musterlösung:
[pr2.vererbung.geometrie3](../../solutions/src/main/java/pr2/vererbung/geometrie3/)

View File

@ -1,6 +1,6 @@
# Konstruktoren schreiben # Konstruktoren schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Für eine vorhandene Klasse Konstruktoren schreiben und Konstruktoren sich gegenseitig und auch Konstruktoren der Superklasse aufrufen lassen. Für eine vorhandene Klasse Konstruktoren schreiben und Konstruktoren sich gegenseitig und auch Konstruktoren der Superklasse aufrufen lassen.

View File

@ -0,0 +1,5 @@
# Lösung: Konstruktoren schreiben
Musterlösung:
[pr2.vererbung.konstruktoren](../../solutions/src/main/java/pr2/vererbung/konstruktoren/)

View File

@ -1,6 +1,6 @@
# Polymorphie einsetzen # Polymorphie einsetzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Durch Polymorphie Subklassen wie Basisklassen behandeln können. Durch Polymorphie Subklassen wie Basisklassen behandeln können.

View File

@ -0,0 +1,5 @@
# Lösung: Polymorphie einsetzen
Musterlösung:
[pr2.vererbung.polymorphie](../../solutions/src/main/java/pr2/vererbung/polymorphie/)

View File

@ -1,6 +1,6 @@
# Singleton # Singleton
## Lernziel ## Lernziel
[Musterlösung](solution/)
Das Design-Pattern _Singleton_ einsetzen. Das Design-Pattern _Singleton_ einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Singleton
Musterlösung:
[pr2.vererbung.singleton_einfach](../../solutions/src/main/java/pr2/vererbung/singleton_einfach/)

View File

@ -1,6 +1,6 @@
# Statische Methoden und Attribute # Statische Methoden und Attribute
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine Klasse mit statischen Attributen und Methoden entwickeln und die Unterschiede zu normalen Methoden und Attributen verstehen. Eine Klasse mit statischen Attributen und Methoden entwickeln und die Unterschiede zu normalen Methoden und Attributen verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Statische Methoden und Attribute
Musterlösung:
[pr2.vererbung.statics](../../solutions/src/main/java/pr2/vererbung/statics/)

View File

@ -1,6 +1,6 @@
# Methode überladen # Methode überladen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Methoden überladen. Methoden überladen.

View File

@ -0,0 +1,5 @@
# Lösung: Methode überladen
Musterlösung:
[pr2.vererbung.ueberladen_summe](../../solutions/src/main/java/pr2/vererbung/ueberladen_summe)

View File

@ -1,6 +1,6 @@
# Methoden überschreiben # Methoden überschreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Bei Vererbung das Überschreiben von Methoden einsetzen. Bei Vererbung das Überschreiben von Methoden einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Methoden überschreiben
Musterlösung:
[pr2.vererbung.ueberschreiben_lebewesen](../../solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/)

View File

@ -1,6 +1,6 @@
# Varag-Methode schreiben # Varag-Methode schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine Varag-Methode schreiben. Eine Varag-Methode schreiben.

View File

@ -0,0 +1,5 @@
# Lösung: Varag-Methode schreiben
Musterlösung:
[pr2.vererbung.vararg_summe](../../solutions/src/main/java/pr2/vererbung/vararg_summe/)

View File

@ -1,6 +1,6 @@
# Vererbung von Figuren # Vererbung von Figuren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einfache Klassen schreiben und eine Vererbungshierarchie bilden. Einfache Klassen schreiben und eine Vererbungshierarchie bilden.

View File

@ -0,0 +1,5 @@
# Lösung: Vererbung von Figuren
Musterlösung:
[pr2.vererbung.vererbung_geometrie](../../solutions/src/main/java/pr2/vererbung/vererbung_geometrie/)

222
readme.md
View File

@ -10,114 +10,114 @@ Hier finden Sie die **freiwilligen Übungen** zur Vorlesung Programmieren 2 (PR2
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md). Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
| # | Kapitel | Thema | | # | Kapitel | Thema | Musterlösung |
|-----|-----------------------|---------------------------------------------------------------------------------------------------| |-----|-----------------------|---------------------------------------------------------------------------------------------------|----------------|
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) | | 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) | [](Auffrischung_001/solution/) |
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) | | 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) | [](Auffrischung_002/solution/) |
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) | | 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) | [](Auffrischung_003/solution/) |
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) | | 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) | [](Auffrischung_004/solution/) |
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) | | 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) | [](Auffrischung_005/solution/) |
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) | | 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) | [](Auffrischung_006/solution/) |
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) | | 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) | [](Einfuehrung_001/solution/) |
| 8. | Einführung | [JavaDoc schreiben](Einfuehrung_002/readme.md) | | 8. | Einführung | [JavaDoc schreiben](Einfuehrung_002/readme.md) | [](Einfuehrung_002/solution/) |
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) | | 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) | [](Einfuehrung_003/solution/) |
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) | | 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) | [](Strukturierung_001/solution/) |
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) | | 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) | [](Strukturierung_002/solution/) |
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) | | 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) | [](Vererbung_001/solution/) |
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) | | 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) | [](Vererbung_002/solution/) |
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) | | 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) | [](Vererbung_003/solution/) |
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) | | 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) | [](Vererbung_004/solution/) |
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) | | 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) | [](Vererbung_005/solution/) |
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) | | 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) | [](Vererbung_006/solution/) |
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) | | 18. | Vererbung | [Singleton](Vererbung_007/readme.md) | [](Vererbung_007/solution/) |
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) | | 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) | [](Vererbung_008/solution/) |
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) | | 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) | [](Vererbung_009/solution/) |
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) | | 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) | [](Vererbung_010/solution/) |
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) | | 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) | [](Vererbung_011/solution/) |
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) | | 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) | [](Vererbung_012/solution/) |
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) | | 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) | [](Abstrakte_Klassen_001/solution/) |
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) | | 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) | [](Abstrakte_Klassen_002/solution/) |
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) | | 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) | [](Interfaces_001/solution/) |
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) | | 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) | [](Interfaces_002/solution/) |
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) | | 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) | [](Interfaces_003/solution/) |
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) | | 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) | [](Interfaces_004/solution/) |
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) | | 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) | [](Object_und_Wrapper_001/solution/) |
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) | | 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) | [](Object_und_Wrapper_002/solution/) |
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) | | 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) | [](Object_und_Wrapper_003/solution/) |
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) | | 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) | [](Object_und_Wrapper_004/solution/) |
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) | | 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) | [](Object_und_Wrapper_005/solution/) |
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) | | 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) | [](Object_und_Wrapper_006/solution/) |
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) | | 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) | [](Object_und_Wrapper_007/solution/) |
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) | | 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) | [](Enumerationen_001/solution/) |
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) | | 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) | [](Enumerationen_002/solution/) |
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) | | 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) | [](Enumerationen_003/solution/) |
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) | | 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) | [](Enumerationen_004/solution/) |
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) | | 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) | [](Ausnahmen_001/solution/) |
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) | | 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) | [](Ausnahmen_002/solution/) |
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) | | 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) | [](Ausnahmen_003/solution/) |
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) | | 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) | [](Ausnahmen_004/solution/) |
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) | | 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) | [](Ausnahmen_005/solution/) |
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) | | 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) | |
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) | | 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) | |
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) | | 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) | |
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) | | 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) | |
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) | | 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) | |
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) | | 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) | |
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) | | 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) | |
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) | | 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) | |
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) | | 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) | |
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) | | 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) | |
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) | | 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) | |
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) | | 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) | |
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) | | 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) | |
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) | | 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) | |
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) | | 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) | |
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) | | 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) | |
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) | | 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) | |
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) | | 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) | |
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) | | 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) | |
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) | | 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) | |
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) | | 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) | |
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) | | 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) | |
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) | | 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) | |
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) | | 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) | |
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) | | 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) | |
| 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) | | 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) | |
| 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) | | 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) | |
| 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) | | 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) | |
| 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) | | 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) | |
| 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) | | 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) | |
| 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) | | 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) | |
| 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) | | 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) | |
| 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) | | 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) | |
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | | 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | |
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | | 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | |
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) | | 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) | |
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) | | 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) | |
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | | 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | |
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | | 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | |
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) | | 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) | |
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | | 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | |
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | | 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | |
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) | | 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) | |
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | | 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | |
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | | 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | |
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | | 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | |
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | | 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | |
| 93. | Streams | [Liste filtern](Streams_004/readme.md) | | 93. | Streams | [Liste filtern](Streams_004/readme.md) | |
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | | 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | |
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | | 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | |
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | | 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | |
| 97. | Streams | [Reduce](Streams_008/readme.md) | | 97. | Streams | [Reduce](Streams_008/readme.md) | |
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | | 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | |
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | | 99. | Streams | [Wörter zählen](Streams_010/readme.md) | |
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | | 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | |
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | | 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | |
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | | 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | |
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | | 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | |
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | | 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | |
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | | 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | |
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | | 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | |
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | | 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | |
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | | 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | |
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | | 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | |

View File

@ -0,0 +1,16 @@
package pr2.auffrischung.grossmacher;
public class Grossmacher {
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("Kein Argument angeben!");
return;
}
String ergebnis = args[0].toUpperCase();
System.out.printf("Ergebnis: %s%n", ergebnis);
System.out.printf("Zeichen : %d%n", ergebnis.length());
}
}

View File

@ -0,0 +1,27 @@
package pr2.auffrischung.labeled_break;
public class ArraySucher {
/**
* Sucht das erste Element, dass nicht 0 ist.
*
* @param array das Array in dem gesucht werden soll
* @return {@code true}, wenn ein Element gefunden wird,
* andernfalls {@code false}.
*/
public boolean suche(int[][] array) {
boolean found = false;
outer:
for (int[] is : array) {
for (int i : is) {
if (i != 0) {
found = true;
break outer;
}
}
}
return found;
}
}

View File

@ -0,0 +1,53 @@
package pr2.auffrischung.password;
public class PasswortChecker {
private static final char[] NUMBERS = "1234567890".toCharArray();
private static final char[] LOWERCASE
= "abcdefghijklmnopqrstuvwxyz".toCharArray();
private static final char[] UPPERCASE
= "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private static final char[] SPECIAL_CHARS = "!%()\"".toCharArray();
private static boolean contains(String string, char[] chars) {
for (char c : chars) {
if (string.indexOf(c) >= 0) {
return true;
}
}
return false;
}
public static int checkPassword(String password) {
int points = 0;
if (password.length() >= 8) {
points++;
}
if (contains(password, NUMBERS)
&& (contains(password, LOWERCASE)
|| contains(password, UPPERCASE))) {
points++;
}
if (contains(password, SPECIAL_CHARS)) {
points++;
}
if (contains(password, LOWERCASE) && contains(password, UPPERCASE)) {
points++;
}
return points;
}
public static void main(String[] args) {
System.out.println(checkPassword("mutti"));
System.out.println(checkPassword("Mutti"));
System.out.println(checkPassword("mutti123"));
System.out.println(checkPassword("Mutti123"));
System.out.println(checkPassword("Mutti123!%"));
System.out.println(checkPassword("1234"));
}
}

View File

@ -0,0 +1,18 @@
package pr2.auffrischung.printf;
public class DoubleFormatter {
public static void printDouble(double d) {
System.out.printf("%.3f%n", d);
}
public static void main(String[] args) {
printDouble(1.0);
printDouble(10.1);
printDouble(2.01);
printDouble(2.001);
printDouble(2.0001);
printDouble(2.0004);
printDouble(2.0005);
}
}

View File

@ -0,0 +1,21 @@
package pr2.auffrischung.suchemax;
public class GroessteZahl {
public int sucheMax(int[] zahlen) {
int max = Integer.MIN_VALUE;
for (int zahl : zahlen) {
max = Math.max(max, zahl);
}
return max;
}
public static void main(String[] args) {
GroessteZahl g = new GroessteZahl();
System.out.println(g.sucheMax(new int[] {1, 5, 8, 2, 0}));
System.out.println(g.sucheMax(new int[] {-1, -5, -8, -2, -20}));
System.out.println(g.sucheMax(new int[] {10000, -10000, 1, 2, 33}));
}
}

View File

@ -0,0 +1,25 @@
package pr2.auffrischung.taschenrechner;
public class Taschenrechner {
public double rechne(double o1, char op, double o2) {
return switch (op) {
case '+' -> o1 + o2;
case '-' -> o1 - o2;
case '*' -> o1 * o2;
case '/' -> o1 / o2;
case '^' -> Math.pow(o1, o2);
default -> Double.NaN;
};
// return 0.0;
}
public static void main(String[] args) {
Taschenrechner t = new Taschenrechner();
System.out.println(t.rechne(1, '+', 2));
System.out.println(t.rechne(1, '-', 2));
System.out.println(t.rechne(2, '*', 2));
System.out.println(t.rechne(4, '/', 2));
System.out.println(t.rechne(2, '^', 32));
}
}

View File

@ -0,0 +1,9 @@
package pr2.enums.eigene;
import java.util.Random;
/**
* Ein einfacher Würfel.
*/
public class Wuerfel {

View File

@ -0,0 +1,71 @@
package pr2.enums.eigene;
/**
* Enumeration für die verschiedenen Würfel-Typen.
*/
public enum WuerfelTyp {
/**
* 4-seitiger Würfel.
*/
D4(4),
/**
* 6-seitiger Würfel.
*/
D6(6),
/**
* 8-seitiger Würfel.
*/
D8(8),
/**
* 10-seitiger Würfel.
*/
D10(10),
/**
* 12-seitiger Würfel.
*/
D12(12),
/**
* 20-seitiger Würfel.
*/
D20(20);
/**
* Anzahl der Seiten.
*/
private final int seiten;
/**
* Neue Instanz anlegen.
*
* @param seiten Anzahl der Seiten.
*/
WuerfelTyp(int seiten) {
this.seiten = seiten;
}
/**
* Anzahl der Seiten.
*
* @return Anzahl der Seiten.
*/
public int getSeiten() {
return seiten;
}
/**
* Durchschnittliche Augenzahl bei einer großen Anzahl von
* Würfen.
*
* @return Durchschnittliche Augenzahl.
*/
public double average() {
return 0.5 * (seiten + 1);
}
}

View File

@ -0,0 +1,24 @@
package pr2.enums.eigene.test;
import org.junit.jupiter.api.Test;
import pr2.enums.eigene.Wuerfel;
import pr2.enums.eigene.WuerfelTyp;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test für die Würfel.
*/
public class WuerfelTest {
/**
* Anzahl der Durchläufe (Gesetz der großen Zahl!).
*/
private static final int RUNS = 10000000;
@Test
void testFairness() {
for (WuerfelTyp typ : WuerfelTyp.values()) {
internalTestFairness(new Wuerfel(typ), typ.average());
}
}

View File

@ -0,0 +1,50 @@
package pr2.enums.filme;
public enum LieblingsFilme {
/**
* Pulp Fiction.
*/
PULP_FICTION("Pulp Fiction", "Quentin Tarantino", 9),
/**
* Fight Club.
*/
FIGHT_CLUB("Fight Club", "David Fincher", 9),
/**
* Twelve Monkeys.
*/
TWELVE_MONKEYS("Twelve Monkeys", "Terry Giliam", 8),
/**
* Killer Tomatos.
*/
KILLER_TOMATOES("Attack of the Killer Tomatoes", "John de Bello", 4);
private final String name;
private final int bewertung;
private final String regisseur;
private LieblingsFilme(String name, String regisseur,
int bewertung) {
this.name = name;
this.regisseur = regisseur;
this.bewertung = bewertung;
}
public String getName() {
return name;
}
public int getBewertung() {
return bewertung;
}
public String getRegisseur() {
return regisseur;
}
@Override
public String toString() {
return String.format("'%s' von %s; Bewertung %d", name,
regisseur, bewertung);
}
}

Some files were not shown because too many files have changed in this diff Show More