diff --git a/Collections_001/readme.md b/Collections_001/readme.md index 75fa977..f36bba3 100644 --- a/Collections_001/readme.md +++ b/Collections_001/readme.md @@ -1,6 +1,6 @@ # Iterator schreiben ## Lernziel - + [Musterlösung](solution/) Für eine gegebene Klasse einen Iterator schreiben. diff --git a/Collections_001/solution/readme.md b/Collections_001/solution/readme.md new file mode 100644 index 0000000..2af19d3 --- /dev/null +++ b/Collections_001/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Iterator schreiben + +Musterlösung: + +[pr2.collections.iterator](../../solutions/src/main/java/pr2/collections/iterator/) diff --git a/Collections_002/readme.md b/Collections_002/readme.md index 32bc0e1..ac0bb90 100644 --- a/Collections_002/readme.md +++ b/Collections_002/readme.md @@ -1,6 +1,6 @@ # Iterator programmieren ## Lernziel - + [Musterlösung](solution/) Iteratoren verstehen und programmieren. diff --git a/Collections_002/solution/readme.md b/Collections_002/solution/readme.md new file mode 100644 index 0000000..85889cd --- /dev/null +++ b/Collections_002/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Iterator programmieren + +Musterlösung: + +[pr2.collections.list_iterator](../../solutions/src/main/java/pr2/collections/list_iterator/) diff --git a/Collections_003/readme.md b/Collections_003/readme.md index e0b96cf..52866c4 100644 --- a/Collections_003/readme.md +++ b/Collections_003/readme.md @@ -1,6 +1,6 @@ # `List` und dessen Implementierungen ## Lernziel - + [Musterlösung](solution/) Das Interface `List` und eine passende Implementierung einsetzen. diff --git a/Collections_003/solution/readme.md b/Collections_003/solution/readme.md new file mode 100644 index 0000000..6157b4c --- /dev/null +++ b/Collections_003/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: `List` und dessen Implementierungen + +Musterlösung: + +[pr2.collections.list](../../solutions/src/main/java/pr2/collections/list/) diff --git a/Collections_004/readme.md b/Collections_004/readme.md index 94b9db9..d95968f 100644 --- a/Collections_004/readme.md +++ b/Collections_004/readme.md @@ -1,6 +1,6 @@ # `Map` verwenden ## Lernziel - + [Musterlösung](solution/) Das Interface `Map` und seine Implementierungen verwenden, um Daten effizient zu verarbeiten. diff --git a/Collections_004/solution/readme.md b/Collections_004/solution/readme.md new file mode 100644 index 0000000..cd64cf7 --- /dev/null +++ b/Collections_004/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: `Map` verwenden + +Musterlösung: + +[pr2.collections.map](../../solutions/src/main/java/pr2/collections/map/) diff --git a/Collections_005/readme.md b/Collections_005/readme.md index b32a790..5e7737f 100644 --- a/Collections_005/readme.md +++ b/Collections_005/readme.md @@ -1,6 +1,6 @@ # ReverserGeneric ## Lernziel - + [Musterlösung](solution/) `Comparable` verstehen und nutzen. diff --git a/Collections_005/solution/readme.md b/Collections_005/solution/readme.md new file mode 100644 index 0000000..727c05e --- /dev/null +++ b/Collections_005/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: ReverserGeneric + +Musterlösung: + +[pr2.collections.reverser_generic](../../solutions/src/main/java/pr2/collections/reverser_generic/) diff --git a/Collections_006/readme.md b/Collections_006/readme.md index 1e3a537..812e15e 100644 --- a/Collections_006/readme.md +++ b/Collections_006/readme.md @@ -1,6 +1,6 @@ # Strings umgekehrt sortieren: Reverser ## Lernziel - + [Musterlösung](solution/) `Comparable` verstehen und nutzen. diff --git a/Collections_006/solution/readme.md b/Collections_006/solution/readme.md new file mode 100644 index 0000000..297fa12 --- /dev/null +++ b/Collections_006/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Strings umgekehrt sortieren: Reverser + +Musterlösung: + +[pr2.collections.reverser](../../solutions/src/main/java/pr2/collections/reverser/) diff --git a/Collections_007/readme.md b/Collections_007/readme.md index 9c95223..5708a8f 100644 --- a/Collections_007/readme.md +++ b/Collections_007/readme.md @@ -1,6 +1,6 @@ # `Set` und dessen Implementierungen ## Lernziel - + [Musterlösung](solution/) Das Interface `Set` und eine passende Implementierung einsetzen. diff --git a/Collections_007/solution/readme.md b/Collections_007/solution/readme.md new file mode 100644 index 0000000..a7c6da7 --- /dev/null +++ b/Collections_007/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: `Set` und dessen Implementierungen + +Musterlösung: + +[pr2.collections.set](../../solutions/src/main/java/pr2/collections/set/) diff --git a/Collections_008/readme.md b/Collections_008/readme.md index f150c63..20cae96 100644 --- a/Collections_008/readme.md +++ b/Collections_008/readme.md @@ -1,6 +1,6 @@ # CommandLineSorter ## Lernziel - + [Musterlösung](solution/) Sortieren von Collections. diff --git a/Collections_008/solution/readme.md b/Collections_008/solution/readme.md new file mode 100644 index 0000000..6c8a0cf --- /dev/null +++ b/Collections_008/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: CommandLineSorter + +Musterlösung: + +[pr2.collections.sorter_1](../../solutions/src/main/java/pr2/collections/sorter_1/) diff --git a/Collections_009/readme.md b/Collections_009/readme.md index 0d76a7f..13247e8 100644 --- a/Collections_009/readme.md +++ b/Collections_009/readme.md @@ -1,6 +1,6 @@ # CommandLineSorter -- Version 2 ## Lernziel - + [Musterlösung](solution/) Sortieren von Collections. diff --git a/Collections_009/solution/readme.md b/Collections_009/solution/readme.md new file mode 100644 index 0000000..be55751 --- /dev/null +++ b/Collections_009/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: CommandLineSorter -- Version 2 + +Musterlösung: + +[pr2.collections.sorter_2](../../solutions/src/main/java/pr2/collections/sorter_2/) diff --git a/Collections_010/readme.md b/Collections_010/readme.md index 7a8066c..e7fa2f3 100644 --- a/Collections_010/readme.md +++ b/Collections_010/readme.md @@ -1,6 +1,6 @@ # `Comparator` verwenden und Objekte sortieren ## Lernziel - + [Musterlösung](solution/) Verschiedene Sortierreihenfolgen durch die Implementierung von `Comparator` realisieren. diff --git a/Collections_010/solution/readme.md b/Collections_010/solution/readme.md new file mode 100644 index 0000000..f543e35 --- /dev/null +++ b/Collections_010/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: `Comparator` verwenden und Objekte sortieren + +Musterlösung: + +[pr2.collections.sortieren](../../solutions/src/main/java/pr2/collections/sortieren/) diff --git a/Collections_011/readme.md b/Collections_011/readme.md index 415810d..8e4705c 100644 --- a/Collections_011/readme.md +++ b/Collections_011/readme.md @@ -1,6 +1,6 @@ # Wörterbuchprogramm ## Lernziel - + [Musterlösung](solution/) Interface `Map` und seine Implementierungen einsetzen. diff --git a/Collections_011/solution/readme.md b/Collections_011/solution/readme.md new file mode 100644 index 0000000..8fa5708 --- /dev/null +++ b/Collections_011/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Wörterbuchprogramm + +Musterlösung: + +[pr2.collections.woerterbuch](../../solutions/src/main/java/pr2/collections/woerterbuch/) diff --git a/Streams_001/readme.md b/Streams_001/readme.md index 39b74d5..c95e4ec 100644 --- a/Streams_001/readme.md +++ b/Streams_001/readme.md @@ -1,6 +1,6 @@ # Kleinbuchstaben in einem String zählen ## Lernziel - + [Musterlösung](solution/) Streams verwenden. diff --git a/Streams_001/solution/readme.md b/Streams_001/solution/readme.md new file mode 100644 index 0000000..d1d3ae1 --- /dev/null +++ b/Streams_001/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Kleinbuchstaben in einem String zählen + +Musterlösung: + +[pr2.streams.chars_1](../.. /solutions/src/main/java/pr2/streams/chars_1/) diff --git a/Streams_002/readme.md b/Streams_002/readme.md index 2b66375..aad8611 100644 --- a/Streams_002/readme.md +++ b/Streams_002/readme.md @@ -1,6 +1,6 @@ # Buchstaben in einer Liste von Strings zählen ## Lernziel - + [Musterlösung](solution/) Streams verwenden. diff --git a/Streams_002/solution/readme.md b/Streams_002/solution/readme.md new file mode 100644 index 0000000..dbcf8ff --- /dev/null +++ b/Streams_002/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Buchstaben in einer Liste von Strings zählen + +Musterlösung: + +[pr2.streams.chars_2](../.. /solutions/src/main/java/pr2/streams/chars_2/) diff --git a/Streams_003/readme.md b/Streams_003/readme.md index 798b2e6..997e31b 100644 --- a/Streams_003/readme.md +++ b/Streams_003/readme.md @@ -1,6 +1,6 @@ # Kleinbuchstaben in einem String zählen ## Lernziel - + [Musterlösung](solution/) Streams verwenden. diff --git a/Streams_003/solution/readme.md b/Streams_003/solution/readme.md new file mode 100644 index 0000000..31fc023 --- /dev/null +++ b/Streams_003/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Kleinbuchstaben in einem String zählen + +Musterlösung: + +[pr2.streams.chars_3](../.. /solutions/src/main/java/pr2/streams/chars_3/) diff --git a/Streams_004/readme.md b/Streams_004/readme.md index 6d46587..8035807 100644 --- a/Streams_004/readme.md +++ b/Streams_004/readme.md @@ -1,6 +1,6 @@ # Liste filtern ## Lernziel - + [Musterlösung](solution/) Daten in Streams filtern. diff --git a/Streams_004/solution/readme.md b/Streams_004/solution/readme.md new file mode 100644 index 0000000..2647d87 --- /dev/null +++ b/Streams_004/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Liste filtern + +Musterlösung: + +[pr2.streams.filter](../.. /solutions/src/main/java/pr2/streams/filter/) diff --git a/Streams_005/readme.md b/Streams_005/readme.md index a993ed6..f67896c 100644 --- a/Streams_005/readme.md +++ b/Streams_005/readme.md @@ -1,6 +1,6 @@ # Streams mit interner Iteration ## Lernziel - + [Musterlösung](solution/) Einen Stream mit einer internen Iteration verwenden. Die Iteration sowohl mit einem Lambda, als auch mit einer Methodenreferenz durchführen. diff --git a/Streams_005/solution/readme.md b/Streams_005/solution/readme.md new file mode 100644 index 0000000..0059370 --- /dev/null +++ b/Streams_005/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Streams mit interner Iteration + +Musterlösung: + +[pr2.streams.interne_iteration](../../solutions/src/main/java/pr2/streams/interne_iteration/) diff --git a/Streams_006/readme.md b/Streams_006/readme.md index 96615d4..1192002 100644 --- a/Streams_006/readme.md +++ b/Streams_006/readme.md @@ -1,6 +1,6 @@ # Map und Filter auf Streams ## Lernziel - + [Musterlösung](solution/) Einen Stream durch Map- und Filter-Operationen analysieren und gewünschte Daten extrahieren. diff --git a/Streams_006/solution/readme.md b/Streams_006/solution/readme.md new file mode 100644 index 0000000..2ba4e09 --- /dev/null +++ b/Streams_006/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Map und Filter auf Streams + +Musterlösung: + +[pr2.streams.map_filter](../../solutions/src/main/java/pr2/streams/map_filter/) diff --git a/Streams_007/readme.md b/Streams_007/readme.md index db68748..5264296 100644 --- a/Streams_007/readme.md +++ b/Streams_007/readme.md @@ -1,6 +1,6 @@ # Map und Reduce auf Streams ## Lernziel - + [Musterlösung](solution/) Die Daten in einem Stream durch Map- und Reduce verdichten. diff --git a/Streams_007/solution/readme.md b/Streams_007/solution/readme.md new file mode 100644 index 0000000..18c5606 --- /dev/null +++ b/Streams_007/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Map und Reduce auf Streams + +Musterlösung: + +[pr2.streams.reduce_critics](../../solutions/src/main/java/pr2/streams/reduce_critics/) diff --git a/Streams_008/readme.md b/Streams_008/readme.md index 58eda20..c3ce9c4 100644 --- a/Streams_008/readme.md +++ b/Streams_008/readme.md @@ -1,6 +1,6 @@ # Reduce ## Lernziel - + [Musterlösung](solution/) Daten in Streams mit `reduce` aggregieren. diff --git a/Streams_008/solution/readme.md b/Streams_008/solution/readme.md new file mode 100644 index 0000000..9a58412 --- /dev/null +++ b/Streams_008/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Reduce + +Musterlösung: + +[pr2.streams.reduce](../../solutions/src/main/java/pr2/streams/reduce/) diff --git a/Streams_009/readme.md b/Streams_009/readme.md index 21c21d2..c94f3c5 100644 --- a/Streams_009/readme.md +++ b/Streams_009/readme.md @@ -1,6 +1,6 @@ # Summe über reduce bestimmen ## Lernziel - + [Musterlösung](solution/) Daten in Streams mit `reduce` aggregieren. diff --git a/Streams_009/solution/readme.md b/Streams_009/solution/readme.md new file mode 100644 index 0000000..5b4d4c7 --- /dev/null +++ b/Streams_009/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Summe über reduce bestimmen + +Musterlösung: + +[pr2.streams.summieren](../../solutions/src/main/java/pr2/streams/summieren/) diff --git a/Streams_010/readme.md b/Streams_010/readme.md index 4b1e108..56c1684 100644 --- a/Streams_010/readme.md +++ b/Streams_010/readme.md @@ -1,6 +1,6 @@ # Wörter zählen ## Lernziel - + [Musterlösung](solution/) Daten in Streams mit `reduce` aggregieren. diff --git a/Streams_010/solution/readme.md b/Streams_010/solution/readme.md new file mode 100644 index 0000000..7fb3165 --- /dev/null +++ b/Streams_010/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Wörter zählen + +Musterlösung: + +[pr2.streams.word_count](../../solutions/src/main/java/pr2/streams/word_count/) diff --git a/Threads_001/readme.md b/Threads_001/readme.md index 93db948..3e123dd 100644 --- a/Threads_001/readme.md +++ b/Threads_001/readme.md @@ -1,6 +1,6 @@ # Fakultät parallel berechnen ## Lernziel - + [Musterlösung](solution/) Berechnungen parallelisieren. diff --git a/Threads_001/solution/readme.md b/Threads_001/solution/readme.md new file mode 100644 index 0000000..c0bcf7b --- /dev/null +++ b/Threads_001/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Fakultät parallel berechnen + +Musterlösung: + +[pr2.threads.fakultaet](../../solutions/src/main/java/pr2/threads/fakultaet/) diff --git a/Threads_002/readme.md b/Threads_002/readme.md index c14a6ed..d058ac6 100644 --- a/Threads_002/readme.md +++ b/Threads_002/readme.md @@ -1,6 +1,6 @@ # Thread per interrupt beenden ## Lernziel - + [Musterlösung](solution/) Threads kontrolliert beenden. diff --git a/Threads_002/solution/readme.md b/Threads_002/solution/readme.md new file mode 100644 index 0000000..5a7c8e9 --- /dev/null +++ b/Threads_002/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Thread per interrupt beenden + +Musterlösung: + +[pr2.threads.interrupt](../../solutions/src/main/java/pr2/threads/interrupt/) diff --git a/Threads_003/readme.md b/Threads_003/readme.md index 714bd4b..b295e6e 100644 --- a/Threads_003/readme.md +++ b/Threads_003/readme.md @@ -1,6 +1,6 @@ # wait und notify benutzen ## Lernziel - + [Musterlösung](solution/) Thread-Koordination über Condition-Variablen. diff --git a/Threads_003/solution/readme.md b/Threads_003/solution/readme.md new file mode 100644 index 0000000..0583814 --- /dev/null +++ b/Threads_003/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: wait und notify benutzen + +Musterlösung: + +[pr2.threads.notifier](../../solutions/src/main/java/pr2/threads/notifier/) diff --git a/Threads_004/readme.md b/Threads_004/readme.md index 4f73019..85470c2 100644 --- a/Threads_004/readme.md +++ b/Threads_004/readme.md @@ -1,6 +1,6 @@ # Parallele Ausgaben erzeugen ## Lernziel - + [Musterlösung](solution/) Erste Schritte mit Threads. diff --git a/Threads_004/solution/readme.md b/Threads_004/solution/readme.md new file mode 100644 index 0000000..17c775b --- /dev/null +++ b/Threads_004/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Parallele Ausgaben erzeugen + +Musterlösung: + +[pr2.threads.paralleldrucker](../../solutions/src/main/java/pr2/threads/paralleldrucker/) diff --git a/Threads_005/readme.md b/Threads_005/readme.md index b0892d6..beee270 100644 --- a/Threads_005/readme.md +++ b/Threads_005/readme.md @@ -1,6 +1,6 @@ # Race-Condition finden und beheben ## Lernziel - + [Musterlösung](solution/) In einem gegebenen Programm Race-Conditions finden und durch den Einsatz von kritischen Abschnitten beheben. diff --git a/Threads_005/solution/readme.md b/Threads_005/solution/readme.md new file mode 100644 index 0000000..45b3e12 --- /dev/null +++ b/Threads_005/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Race-Condition finden und beheben + +Musterlösung: + +[pr2.threads.race_condition](../../solutions/src/main/java/pr2/threads/race_condition/) diff --git a/Threads_006/readme.md b/Threads_006/readme.md index 47d08ab..bf0eea1 100644 --- a/Threads_006/readme.md +++ b/Threads_006/readme.md @@ -1,6 +1,6 @@ # Stack und Heap unterscheiden ## Lernziel - + [Musterlösung](solution/) Unterschied zwischen Stack und Heap bei parallelen Programmen verstehen. diff --git a/Threads_006/solution/readme.md b/Threads_006/solution/readme.md new file mode 100644 index 0000000..fd5dfb1 --- /dev/null +++ b/Threads_006/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Stack und Heap unterscheiden + +Musterlösung: + +[pr2.threads.stack_heap](../../solutions/src/main/java/pr2/threads/stack_heap/) diff --git a/Threads_007/readme.md b/Threads_007/readme.md index a157f4b..648ed02 100644 --- a/Threads_007/readme.md +++ b/Threads_007/readme.md @@ -1,6 +1,6 @@ # synchronized verwenden ## Lernziel - + [Musterlösung](solution/) Schlüsselwort `synchronized` verwenden. diff --git a/Threads_007/solution/readme.md b/Threads_007/solution/readme.md new file mode 100644 index 0000000..7ba8abd --- /dev/null +++ b/Threads_007/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: synchronized verwenden + +Musterlösung: + +[pr2.threads.synchronize](../../solutions/src/main/java/pr2/threads/synchronize/) diff --git a/Threads_008/readme.md b/Threads_008/readme.md index c600122..cddb6cd 100644 --- a/Threads_008/readme.md +++ b/Threads_008/readme.md @@ -1,6 +1,6 @@ # Timer und TimerTask verwenden ## Lernziel - + [Musterlösung](solution/) Klassen aus `java.util.concurrent` verwenden. diff --git a/Threads_008/solution/readme.md b/Threads_008/solution/readme.md new file mode 100644 index 0000000..71eb839 --- /dev/null +++ b/Threads_008/solution/readme.md @@ -0,0 +1,5 @@ +# Lösung: Timer und TimerTask verwenden + +Musterlösung: + +[pr2.threads.timer](../../solutions/src/main/java/pr2/threads/timer/) diff --git a/readme.md b/readme.md index 22e00e4..b42d37e 100644 --- a/readme.md +++ b/readme.md @@ -90,34 +90,34 @@ Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstat | 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) | [✅](Geschachtelte_Klassen_001/solution/) | | 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) | [✅](Lambdas_001/solution/) | | 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) | [✅](Lambdas_002/solution/) | -| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | | -| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | | -| 81. | Collections | [`List` und dessen Implementierungen](Collections_003/readme.md) | | -| 82. | Collections | [`Map` verwenden](Collections_004/readme.md) | | -| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | | -| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | | -| 85. | Collections | [`Set` und dessen Implementierungen](Collections_007/readme.md) | | -| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | | -| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | | -| 88. | Collections | [`Comparator` verwenden und Objekte sortieren](Collections_010/readme.md) | | -| 89. | Collections | [Wörterbuchprogramm](Collections_011/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) | | -| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | | -| 93. | Streams | [Liste filtern](Streams_004/readme.md) | | -| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | | -| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | | -| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | | -| 97. | Streams | [Reduce](Streams_008/readme.md) | | -| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | | -| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | | -| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | | -| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | | -| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | | -| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | | -| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | | -| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | | -| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | | -| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | | +| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | [✅](Collections_001/solution/) | +| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | [✅](Collections_002/solution/) | +| 81. | Collections | [`List` und dessen Implementierungen](Collections_003/readme.md) | [✅](Collections_003/solution/) | +| 82. | Collections | [`Map` verwenden](Collections_004/readme.md) | [✅](Collections_004/solution/) | +| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | [✅](Collections_005/solution/) | +| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | [✅](Collections_006/solution/) | +| 85. | Collections | [`Set` und dessen Implementierungen](Collections_007/readme.md) | [✅](Collections_007/solution/) | +| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | [✅](Collections_008/solution/) | +| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | [✅](Collections_009/solution/) | +| 88. | Collections | [`Comparator` verwenden und Objekte sortieren](Collections_010/readme.md) | [✅](Collections_010/solution/) | +| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | [✅](Collections_011/solution/) | +| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | [✅](Streams_001/solution/) | +| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | [✅](Streams_002/solution/) | +| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | [✅](Streams_003/solution/) | +| 93. | Streams | [Liste filtern](Streams_004/readme.md) | [✅](Streams_004/solution/) | +| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | [✅](Streams_005/solution/) | +| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | [✅](Streams_006/solution/) | +| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | [✅](Streams_007/solution/) | +| 97. | Streams | [Reduce](Streams_008/readme.md) | [✅](Streams_008/solution/) | +| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | [✅](Streams_009/solution/) | +| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | [✅](Streams_010/solution/) | +| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | [✅](Threads_001/solution/) | +| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | [✅](Threads_002/solution/) | +| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | [✅](Threads_003/solution/) | +| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | [✅](Threads_004/solution/) | +| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | [✅](Threads_005/solution/) | +| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | [✅](Threads_006/solution/) | +| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | [✅](Threads_007/solution/) | +| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | [✅](Threads_008/solution/) | | 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | | | 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | | diff --git a/solutions/src/main/java/pr2/auffrischung/suchemax/GroessteZahl.java b/solutions/src/main/java/pr2/auffrischung/suchemax/GroessteZahl.java index 92f89b7..707336a 100644 --- a/solutions/src/main/java/pr2/auffrischung/suchemax/GroessteZahl.java +++ b/solutions/src/main/java/pr2/auffrischung/suchemax/GroessteZahl.java @@ -3,7 +3,7 @@ package pr2.auffrischung.suchemax; public class GroessteZahl { public int sucheMax(int[] zahlen) { - int max = Integer.MIN_VALUE; + int max = Integer.MIN_VALUE; for (int zahl : zahlen) { max = Math.max(max, zahl); diff --git a/solutions/src/main/java/pr2/collections/iterator/SimpleStack.java b/solutions/src/main/java/pr2/collections/iterator/SimpleStack.java new file mode 100644 index 0000000..dd70937 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/iterator/SimpleStack.java @@ -0,0 +1,79 @@ +package pr2.collections.iterator; + +import java.util.Iterator; + +/** + * Eine einfache, naive Stack Implementierung. + * + * @param Typ, der gespeichert werden soll. + */ +public class SimpleStack implements Iterable { + + // Variablen sind nicht private wegen Zugriff durch den Iterator + T[] stack; + + int pos; + + /** + * Legt einen neuen Stack mit der gegebenen Größe an. + * + * @param size Größe des Stacks. + */ + @SuppressWarnings("unchecked") + public SimpleStack(int size) { + stack = (T[]) new Object[size]; + pos = 0; + } + + /** + * Fügt dem Stack ein neues Element hinzu. + * + * @param o Element, das hinzugefügt werden soll. + */ + public void push(T o) { + stack[pos++] = o; + } + + /** + * Holt das oberste Element und entfernt es. + * + * @return das oberste Element + */ + public T pop() { + return stack[--pos]; + } + + /** + * Gibt das oberste Element zurück, ohne es zu entfernen. + * + * @return das oberste Element + */ + public T peek() { + return stack[pos - 1]; + } + + + /** + * Erzeugt einen Iterator. + * + * @return Iterator + * @see java.lang.Iterable#iterator() + */ + @Override + public Iterator iterator() { + return new Iterator() { + + int iteratorPos = pos - 1; + + @Override + public boolean hasNext() { + return iteratorPos >= 0; + } + + @Override + public T next() { + return stack[iteratorPos--]; + } + }; + } +} diff --git a/solutions/src/main/java/pr2/collections/iterator/test/SimpleStackTest.java b/solutions/src/main/java/pr2/collections/iterator/test/SimpleStackTest.java new file mode 100644 index 0000000..79ce559 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/iterator/test/SimpleStackTest.java @@ -0,0 +1,86 @@ +package pr2.collections.iterator.test; + +import org.junit.jupiter.api.Test; +import pr2.collections.iterator.SimpleStack; + +import java.util.Iterator; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Test für den Stack. + */ +public class SimpleStackTest { + + /** + * Testet den Stack an sich. + */ + @Test + void testStack() { + SimpleStack s = new SimpleStack<>(10); + s.push("A"); + s.push("B"); + s.push("C"); + s.push("D"); + assertEquals("D", s.peek()); + assertEquals("D", s.pop()); + assertEquals("C", s.pop()); + assertEquals("B", s.pop()); + s.push("A2"); + s.push("A3"); + assertEquals("A3", s.peek()); + assertEquals("A3", s.pop()); + assertEquals("A2", s.pop()); + assertEquals("A", s.pop()); + } + + + /** + * Testet den Iterator. + */ + @Test + void testIterator() { + SimpleStack s = new SimpleStack<>(10); + s.push("A"); + s.push("B"); + s.push("C"); + s.push("D"); + + String[] result = new String[5]; + int count = 0; + + for (String string : s) { + result[count++] = string; + } + + assertEquals("D", s.peek()); + + assertEquals("D", result[0]); + assertEquals("C", result[1]); + assertEquals("B", result[2]); + assertEquals("A", result[3]); + + s.push("E"); + + Iterator it = s.iterator(); + + count = 0; + while (it.hasNext()) { + result[count++] = it.next(); + } + + assertEquals("E", result[0]); + assertEquals("D", result[1]); + assertEquals("C", result[2]); + assertEquals("B", result[3]); + assertEquals("A", result[4]); + + assertFalse(it.hasNext()); + + it = s.iterator(); + + assertTrue(it.hasNext()); + } +} diff --git a/solutions/src/main/java/pr2/collections/list/WordCollector.java b/solutions/src/main/java/pr2/collections/list/WordCollector.java new file mode 100644 index 0000000..e73c513 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/list/WordCollector.java @@ -0,0 +1,123 @@ +package pr2.collections.list; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * Klassen, um die in einem Text vorkommenden Wörter zu sammeln. + */ +public class WordCollector { + + + /** + * Listet alle Worte in der Datei alphabetisch auf. Duplikate werden + * entfernt. Die Wörter werden in Kleinbuchstaben umgewandelt. + * + * @param filename Dateiname + * @return die Liste der vorhandenen Worte + * @throws IOException Fehler beim Dateizugriff. + */ + public static List listWords(String filename) throws IOException { + List allWords = readFileAndSplitIntoWords(filename); + List result = removeDuplicates(allWords); + + return result; + } + + /** + * Listet alle Worte in der Datei auf. + * + * @param filename Dateiname + * @return die Liste der vorhandenen Worte + * @throws IOException Fehler beim Dateizugriff. + */ + private static List readFileAndSplitIntoWords(String filename) + throws IOException { + + // Datei zum Lesen öffnen + BufferedReader reader = new BufferedReader(new FileReader(filename)); + + String line; // aktuelle Zeile + + List wordList = new LinkedList<>(); + + // Über die Zeilen der Datei iterieren + while ((line = reader.readLine()) != null) { + + // Sonderzeichen entfernen und die Zeilen in Worte splitten + line = line.toLowerCase(); + line = line.replaceAll("[\",.:'\\-!?]", ""); + + String[] words = line.toLowerCase().split("[,. ]"); + + // Worte in den Puffer übertragen + wordList.addAll(Arrays.asList(words)); + } + + reader.close(); + + return wordList; + } + + /** + * Sortiert das übergebene Array alphabetisch und entfernt Duplikate. + * + * @param input Eingabe Array + * @return sortiertes und bereinigtes Array + */ + @SuppressWarnings("PMD.AvoidReassigningLoopVariables") + private static List removeDuplicates(List input) { + + // Eingabe-Liste kopieren + List strings = new ArrayList<>(input); + + // Liste sortieren + Collections.sort(strings); + + // Über die Einträge laufen + for (int i = 0; i < strings.size(); i++) { + + String word = strings.get(i); + + // Über die Einträge laufen + for (int k = i + 1; k < strings.size(); k++) { + + String otherWord = strings.get(k); + + if (otherWord.compareTo(word) > 0) { + // Sind schon hinter der möglichen Position + break; + } + else if (otherWord.equals(word)) { + // Duplikat, entfernen + strings.remove(k); + k--; + } + } + } + + return strings; + } + + /** + * Hauptmethode. + * + * @param args Kommandozeilen-Argumente. + */ + public static void main(String[] args) { + + try { + List words = listWords( + "kafka.txt"); + System.out.println(words); + } catch (IOException e) { + System.err.println("Probleme beim Dateizugriff: " + e); + } + } +} diff --git a/solutions/src/main/java/pr2/collections/list_iterator/Liste.java b/solutions/src/main/java/pr2/collections/list_iterator/Liste.java new file mode 100644 index 0000000..6833b72 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/list_iterator/Liste.java @@ -0,0 +1,57 @@ +package pr2.collections.list_iterator; + +import java.util.Iterator; +public class Liste implements Iterable { + + static class Item { + T element; + Item next; + + public Item(T element) { + this.element = element; + } + } + + Item first; + Item last; + + class ListenIterator implements Iterator { + Item position = first; + + @Override + public boolean hasNext() { + return (position != null); + } + + @Override + public T next() { + T element = position.element; + position = position.next; + return element; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + } + + public void add(T element) { + Item item = new Item(element); + + first = (first != null) ? first : item; + + if (last == null) { + last = item; + } else { + last.next = item; + last = item; + } + + } + + @Override + public Iterator iterator() { + return new ListenIterator(); + } +} diff --git a/solutions/src/main/java/pr2/collections/map/WordCount.java b/solutions/src/main/java/pr2/collections/map/WordCount.java new file mode 100644 index 0000000..5c18fcf --- /dev/null +++ b/solutions/src/main/java/pr2/collections/map/WordCount.java @@ -0,0 +1,83 @@ +package pr2.collections.map; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Zählen von Worthäufigkeiten. + */ +public class WordCount { + + /** + * Listet alle Worte in der Datei und deren Häufigkeit auf. + * Die zurückgegebene Liste ist bereits nach der Häufigkeit + * sortiert. + * + * @param filename Dateiname + * @return die Liste der vorhandenen Wörter + * @throws IOException Fehler beim Dateizugriff. + */ + private static List countWords(String filename) + throws IOException { + + // Map mit dem Wort als Schlüssel und der Häufigkeit als Key + Map frequencyMap = new HashMap<>(); + + // Datei zum Lesen öffnen + BufferedReader reader = new BufferedReader(new FileReader(filename)); + + String line; // aktuelle Zeile + + // Über die Zeilen der Datei iterieren + while ((line = reader.readLine()) != null) { + + // Sonderzeichen entfernen und die Zeilen in Worte splitten + line = line.toLowerCase(); + line = line.replaceAll("[\",.:;)'\\-!?]", ""); + + String[] words = line.toLowerCase().split("[,. ]"); + + for (String word : words) { + WordFrequency entry = frequencyMap.get(word); + if (entry == null) { + entry = new WordFrequency(word, 0); + frequencyMap.put(word, entry); + } + + entry.incrementFrequency(); + } + } + + reader.close(); + + List liste = new ArrayList<>(frequencyMap.values()); + Collections.sort(liste); + + return liste; + } + + /** + * Hauptmethode. + * + * @param args Kommandozeilen-Argumente. + */ + public static void main(String[] args) { + + try { + List words = countWords( + "kafka.txt"); + + for (WordFrequency word : words) { + System.out.println(word); + } + } catch (IOException e) { + System.err.println("Probleme beim Dateizugriff: " + e); + } + } +} diff --git a/solutions/src/main/java/pr2/collections/map/WordFrequency.java b/solutions/src/main/java/pr2/collections/map/WordFrequency.java new file mode 100644 index 0000000..1b1cea1 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/map/WordFrequency.java @@ -0,0 +1,56 @@ +package pr2.collections.map; + +/** + * Klasse für die Verwaltung der Worthäufigkeiten. + */ +public class WordFrequency implements Comparable { + + /** + * Das Wort. + */ + String word; + + /** + * Seine Häufigkeit. + */ + int frequency; + + /** + * Legt ein neues Objekt an. + * + * @param word das gespeicherte Wort + * @param frequency die Häfigkeit + */ + WordFrequency(String word, int frequency) { + this.word = word; + this.frequency = frequency; + } + + + /** + * Vergleich mit anderem Objekt. + * + * @param o das andere Objekt + * @return Ergebnis des Vergleiches + * @see java.lang.Comparable#compareTo(java.lang.Object) + */ + @Override + public int compareTo(WordFrequency o) { + return o.frequency - frequency; + } + + /** + * Erhöht die Häufigkeit des Wortes. + */ + public void incrementFrequency() { + frequency++; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return String.format("%s: %d", word, frequency); + } +} diff --git a/solutions/src/main/java/pr2/collections/reverser/Reverser.java b/solutions/src/main/java/pr2/collections/reverser/Reverser.java new file mode 100644 index 0000000..0025563 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/reverser/Reverser.java @@ -0,0 +1,18 @@ +package pr2.collections.reverser; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class Reverser { + public void reverse(List liste) { + + Collections.sort(liste, new Comparator() { + + @Override + public int compare(String o1, String o2) { + return o1.compareTo(o2) * -1; + } + }); + } +} diff --git a/solutions/src/main/java/pr2/collections/reverser/test/ReverserTest.java b/solutions/src/main/java/pr2/collections/reverser/test/ReverserTest.java new file mode 100644 index 0000000..09f0091 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/reverser/test/ReverserTest.java @@ -0,0 +1,23 @@ +package pr2.collections.reverser.test; + +import org.junit.jupiter.api.Test; +import pr2.collections.reverser.Reverser; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ReverserTest { + + @Test + void testReverser() { + List testListe = Arrays.asList("Meier", "Zabelmann", "Schulze", + "Xavier", "Albert"); + new Reverser().reverse(testListe); + assertEquals(Arrays.asList( + "Zabelmann", "Xavier", "Schulze", "Meier", "Albert"), + testListe); + } + +} diff --git a/solutions/src/main/java/pr2/collections/reverser_generic/Reverser.java b/solutions/src/main/java/pr2/collections/reverser_generic/Reverser.java new file mode 100644 index 0000000..5d03b9d --- /dev/null +++ b/solutions/src/main/java/pr2/collections/reverser_generic/Reverser.java @@ -0,0 +1,19 @@ +package pr2.collections.reverser_generic; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class Reverser> { + + public void reverse(List liste) { + + Collections.sort(liste, new Comparator() { + + @Override + public int compare(T o1, T o2) { + return o1.compareTo(o2) * -1; + } + }); + } +} diff --git a/solutions/src/main/java/pr2/collections/reverser_generic/test/ReverserTest.java b/solutions/src/main/java/pr2/collections/reverser_generic/test/ReverserTest.java new file mode 100644 index 0000000..a623dc2 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/reverser_generic/test/ReverserTest.java @@ -0,0 +1,23 @@ +package pr2.collections.reverser_generic.test; + +import org.junit.jupiter.api.Test; +import pr2.collections.reverser_generic.Reverser; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ReverserTest { + + @Test + void testReverser() { + List testListe = Arrays.asList("Meier", "Zabelmann", "Schulze", + "Xavier", "Albert"); + new Reverser().reverse(testListe); + assertEquals(Arrays.asList( + "Zabelmann", "Xavier", "Schulze", "Meier", "Albert"), + testListe); + } + +} diff --git a/solutions/src/main/java/pr2/collections/set/WordCollector.java b/solutions/src/main/java/pr2/collections/set/WordCollector.java new file mode 100644 index 0000000..8c8fcc5 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/set/WordCollector.java @@ -0,0 +1,81 @@ +package pr2.collections.set; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Klassen, um die in einem Text vorkommenen Wörter zu sammeln. + */ +public class WordCollector { + + + /** + * Listet alle Worte in der Datei alphabetisch auf. Duplikate werden + * entfernt. Die Wörter werden in Kleinbuchstaben umgewandelt. + * + * @param filename Dateiname + * @return die Liste der vorhandenen Worte + * @throws IOException Fehler beim Dateizugriff. + */ + public static List listWords(String filename) throws IOException { + Set allWords = readFileAndSplitIntoWords(filename); + List wordsSorted = new ArrayList<>(allWords); + Collections.sort(wordsSorted); + return wordsSorted; + } + + /** + * Listet alle Worte in der Datei auf. + * + * @param filename Dateiname + * @return die Liste der vorhandenen Worte + * @throws IOException Fehler beim Dateizugriff. + */ + private static Set readFileAndSplitIntoWords(String filename) + throws IOException { + + // Datei zum Lesen öffnen + BufferedReader reader = new BufferedReader(new FileReader(filename)); + + String line; // aktuelle Zeile + Set wordBuffer = new HashSet<>(); // Puffer für die Worte + + // Über die Zeilen der Datei iterieren + while ((line = reader.readLine()) != null) { + + // Sonderzeichen entfernen und die Zeilen in Worte splitten + line = line.replaceAll("[\",.:'\\-!?]", ""); + + String[] words = line.toLowerCase().split("[,. ]"); + + // Worte in den Puffer übertragen + wordBuffer.addAll(Arrays.asList(words)); + } + + reader.close(); + + return wordBuffer; + } + + /** + * Hauptmethode. + * + * @param args Kommandozeilen-Argumente. + */ + public static void main(String[] args) { + + try { + List words = listWords("kafka.txt"); + System.out.println(words); + } catch (IOException e) { + System.err.println("Probleme beim Dateizugriff: " + e); + } + } +} diff --git a/solutions/src/main/java/pr2/collections/sorter_1/CommandLineSorter.java b/solutions/src/main/java/pr2/collections/sorter_1/CommandLineSorter.java new file mode 100644 index 0000000..471bf93 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/sorter_1/CommandLineSorter.java @@ -0,0 +1,17 @@ +package pr2.collections.sorter_1; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class CommandLineSorter { + + public static void main(String[] args) { + List argList = Arrays.asList(args); + Collections.sort(argList); + + for (String element : argList) { + System.out.println(element); + } + } +} diff --git a/solutions/src/main/java/pr2/collections/sorter_2/CommandLineSorter.java b/solutions/src/main/java/pr2/collections/sorter_2/CommandLineSorter.java new file mode 100644 index 0000000..6ab92bb --- /dev/null +++ b/solutions/src/main/java/pr2/collections/sorter_2/CommandLineSorter.java @@ -0,0 +1,16 @@ +package pr2.collections.sorter_2; + +import java.util.Arrays; +import java.util.Set; +import java.util.TreeSet; + +public class CommandLineSorter { + + public static void main(String[] args) { + Set argList = new TreeSet(Arrays.asList(args)); + + for (String element : argList) { + System.out.println(element); + } + } +} diff --git a/solutions/src/main/java/pr2/collections/sortieren/Sorter.java b/solutions/src/main/java/pr2/collections/sortieren/Sorter.java new file mode 100644 index 0000000..2efeeb9 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/sortieren/Sorter.java @@ -0,0 +1,83 @@ +package pr2.collections.sortieren; + +import java.util.Arrays; +import java.util.Comparator; + +/** + * Klasse zum Sortieren von Strings. + */ +public class Sorter { + + /** + * Liefert einen Comparator für Strings. + * + * @param order Sortierreihenfolge. + * @return Comparator, entsprechend der gewünschten Sortierreihenfolge. + */ + private static Comparator stringComparator(final SortOrder order) { + /* Comparator. */ + class MyComparator implements Comparator { + + /** + * Vergleicht die Strings. + * + * @param o1 Erster String + * @param o2 Zweiter String + * @return Ergebnis des Vergleichs. + */ + @Override + public int compare(String o1, String o2) { + switch (order) { + case ASCENDING: + return o1.compareTo(o2); + case DESCENDING: + return -o1.compareTo(o2); + case ASCENDING_CASE_INSENSITIVE: + return o1.toUpperCase().compareTo(o2.toUpperCase()); + case DESCENDING_CASE_INSENSITIVE: + return -o1.toUpperCase().compareTo(o2.toUpperCase()); + default: + throw new IllegalArgumentException(); + } + } + } + + return new MyComparator(); + } + + /** + * Sortiert das übergebene Array entsprechend der gewünschten Reihenfolge. + * + * @param array das zu sortierende Array. + * @param order die Sortierreihenfolge. + */ + public static void sort(String[] array, SortOrder order) { + Arrays.sort(array, stringComparator(order)); + } + + /** + * Sortierreihenfolge für die Strings. + */ + public enum SortOrder { + + /** + * Aufsteigend. + */ + ASCENDING, + + /** + * Absteigend. + */ + DESCENDING, + + /** + * Aufsteigend, ohne Beachtung der Groß-/Kleinschreibung. + */ + ASCENDING_CASE_INSENSITIVE, + + /** + * Absteigend, ohne Beachtung der Groß-/Kleinschreibung. + */ + DESCENDING_CASE_INSENSITIVE + } +} diff --git a/solutions/src/main/java/pr2/collections/sortieren/test/SorterTest.java b/solutions/src/main/java/pr2/collections/sortieren/test/SorterTest.java new file mode 100644 index 0000000..a2c30f2 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/sortieren/test/SorterTest.java @@ -0,0 +1,75 @@ +package pr2.collections.sortieren.test; + +import org.junit.jupiter.api.Test; +import pr2.collections.sortieren.Sorter; +import pr2.collections.sortieren.Sorter.SortOrder; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + + +/** + * Test für die Sortierung. + */ +public class SorterTest { + + private static final String[] DATA = + {"aaron", "ALFONS", "bond", "BerND", "henry", "Hugo"}; + + /** + * Testet die Sortierung: aufsteigend. + */ + @Test + void testAscendingSorting() { + + String[] asc = DATA.clone(); + + Sorter.sort(asc, SortOrder.ASCENDING); + + assertArrayEquals( + new String[] {"ALFONS", "BerND", "Hugo", "aaron", "bond", + "henry"}, asc); + } + + /** + * Testet die Sortierung: Absteigend. + */ + @Test + void testDescendingSorting() { + + String[] desc = DATA.clone(); + Sorter.sort(desc, SortOrder.DESCENDING); + + assertArrayEquals( + new String[] {"henry", "bond", "aaron", "Hugo", "BerND", + "ALFONS"}, desc); + } + + /** + * Testet die Sortierung: Aufsteigend, CI. + */ + @Test + void testAscendingCISorting() { + + String[] ascCI = DATA.clone(); + Sorter.sort(ascCI, SortOrder.ASCENDING_CASE_INSENSITIVE); + + assertArrayEquals( + new String[] {"aaron", "ALFONS", "BerND", "bond", "henry", + "Hugo"}, ascCI); + } + + /** + * Testet die Sortierung: Absteigend, CI. + */ + @Test + void testDescendingCISorting() { + + String[] descCI = DATA.clone(); + + Sorter.sort(descCI, SortOrder.DESCENDING_CASE_INSENSITIVE); + + assertArrayEquals( + new String[] {"Hugo", "henry", "bond", "BerND", "ALFONS", + "aaron"}, descCI); + } +} diff --git a/solutions/src/main/java/pr2/collections/woerterbuch/Woerterbuch.java b/solutions/src/main/java/pr2/collections/woerterbuch/Woerterbuch.java new file mode 100644 index 0000000..9a4d618 --- /dev/null +++ b/solutions/src/main/java/pr2/collections/woerterbuch/Woerterbuch.java @@ -0,0 +1,37 @@ +package pr2.collections.woerterbuch; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class Woerterbuch { + + private static final Map WOERTER; + + static { + Map map = new HashMap(); + map.put("gehen", "go"); + map.put("schlafen", "sleep"); + map.put("tanzen", "dance"); + map.put("springen", "jump"); + + WOERTER = Collections.unmodifiableMap(map); + } + + public static void main(String[] args) { + if (args.length == 0) { + System.err.println("Bitte mindestens ein Wort angeben!"); + System.exit(1); + } + + for (String wort : args) { + String uebersetzung = WOERTER.get(wort); + + if (uebersetzung == null) { + uebersetzung = ""; + } + + System.out.printf("%s => %s%n", wort, uebersetzung); + } + } +} diff --git a/solutions/src/main/java/pr2/enums/eigene/Wuerfel.java b/solutions/src/main/java/pr2/enums/eigene/Wuerfel.java index ba7ccad..beeb3a2 100644 --- a/solutions/src/main/java/pr2/enums/eigene/Wuerfel.java +++ b/solutions/src/main/java/pr2/enums/eigene/Wuerfel.java @@ -23,8 +23,8 @@ public class Wuerfel { * * @param typ Anzahl der Seiten des Würfels. */ - public Wuerfel(WuerfelTyp typ) { - this.numSides = typ.getSeiten(); + public Wuerfel(WuerfelTyp typ) { + this.numSides = typ.getSeiten(); } /** diff --git a/solutions/src/main/java/pr2/enums/eigene/WuerfelTyp.java b/solutions/src/main/java/pr2/enums/eigene/WuerfelTyp.java index c17f4fc..19047f9 100644 --- a/solutions/src/main/java/pr2/enums/eigene/WuerfelTyp.java +++ b/solutions/src/main/java/pr2/enums/eigene/WuerfelTyp.java @@ -1,4 +1,3 @@ - package pr2.enums.eigene; /** diff --git a/solutions/src/main/java/pr2/enums/eigene/test/WuerfelTest.java b/solutions/src/main/java/pr2/enums/eigene/test/WuerfelTest.java index 599bb20..09f197d 100644 --- a/solutions/src/main/java/pr2/enums/eigene/test/WuerfelTest.java +++ b/solutions/src/main/java/pr2/enums/eigene/test/WuerfelTest.java @@ -2,7 +2,7 @@ package pr2.enums.eigene.test; import org.junit.jupiter.api.Test; import pr2.enums.eigene.Wuerfel; -import pr2.enums.eigene.WuerfelTyp; +import pr2.enums.eigene.WuerfelTyp; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/Fuse.java b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/Fuse.java index 6f30f3e..f71ecb5 100644 --- a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/Fuse.java +++ b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/Fuse.java @@ -32,7 +32,7 @@ public class Fuse { * @throws IllegalCurrentException Ausnahme bei einem * ungültigen Spannungswert. */ - public Fuse(int tripCurrent) throws IllegalCurrentException { + public Fuse(int tripCurrent) throws IllegalCurrentException { switch (tripCurrent) { case A16: case A25: @@ -50,7 +50,7 @@ public class Fuse { * @param current Strom, der durch die Sicherung fließt. * @throws FuseTrippedException wird geworfen, wenn der Srom zu groß wird. */ - public void use(int current) throws FuseTrippedException { + public void use(int current) throws FuseTrippedException { if (current > tripCurrent) { throw new FuseTrippedException(current, tripCurrent); } diff --git a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java index 82308a4..06406a0 100644 --- a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java +++ b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java @@ -3,7 +3,7 @@ package pr2.exceptions.eigene_ausnahme; /** * Ausnahme, wenn die Sicherung auslöst. */ -public class FuseTrippedException extends Exception { +public class FuseTrippedException extends Exception { /** * Strom, bei dem die Sicherung ausgelöst hat. */ diff --git a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java index 980783e..2a163c9 100644 --- a/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java +++ b/solutions/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java @@ -3,7 +3,7 @@ package pr2.exceptions.eigene_ausnahme; /** * Ausnahme, wenn eine Sicherung angelegt werden soll, die es nicht gibt. */ -public class IllegalCurrentException extends Exception { +public class IllegalCurrentException extends Exception { /** * Übergebener Strom. diff --git a/solutions/src/main/java/pr2/exceptions/fakultaet/Fakultaet.java b/solutions/src/main/java/pr2/exceptions/fakultaet/Fakultaet.java index 736edf6..1f03a7c 100644 --- a/solutions/src/main/java/pr2/exceptions/fakultaet/Fakultaet.java +++ b/solutions/src/main/java/pr2/exceptions/fakultaet/Fakultaet.java @@ -2,7 +2,7 @@ package pr2.exceptions.fakultaet; public class Fakultaet { - public int fact(int n) throws FakultaetException { + public int fact(int n) throws FakultaetException { if (n < 0) { throw new FakultaetException("Keine negativen Zahlen!", n); } @@ -13,6 +13,6 @@ public class Fakultaet { } private int factIntern(int n) { - return (n == 0) ? 1 : factIntern(n - 1) * n; + return (n == 0) ? 1 : factIntern(n - 1) * n; } } diff --git a/solutions/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java b/solutions/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java index 5c47848..6ef0290 100644 --- a/solutions/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java +++ b/solutions/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java @@ -1,6 +1,6 @@ package pr2.exceptions.fakultaet; -public class FakultaetException extends Exception { +public class FakultaetException extends Exception { private final int zahl; diff --git a/solutions/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java b/solutions/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java index 3892e52..9c0eda8 100644 --- a/solutions/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java +++ b/solutions/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java @@ -5,12 +5,12 @@ import pr2.exceptions.fakultaet.Fakultaet; import pr2.exceptions.fakultaet.FakultaetException; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertThrows; public class FakultaetTest { @Test - void testFact() throws FakultaetException { + void testFact() throws FakultaetException { Fakultaet f = new Fakultaet(); assertEquals(1, f.fact(0)); assertEquals(1, f.fact(1)); diff --git a/solutions/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java b/solutions/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java index 895b5ab..5007c34 100644 --- a/solutions/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java +++ b/solutions/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java @@ -18,7 +18,6 @@ public class Buchstabenzaehler { */ public static void main(String[] args) { Buchstabenzaehler bs = new Buchstabenzaehler(); - try { bs.run(); } @@ -33,16 +32,13 @@ public class Buchstabenzaehler { * @throws StatistikException Fehler bei der Berechnung der * Buchstabenhäufigkeit. */ - private void run() throws StatistikException { + private void run() throws StatistikException { System.out.print("Bitte geben Sie den Dateinamen an: "); Scanner scanner = new Scanner(System.in); String dateiname = scanner.nextLine(); int[] statistik; - - - try { statistik = parseFile("assets/" + dateiname); printStatistik(statistik); @@ -64,7 +60,7 @@ public class Buchstabenzaehler { * @param statistik Statistik * @throws StatistikException Fehler bei den Eingabedaten */ - private void printStatistik(int[] statistik) throws StatistikException { + private void printStatistik(int[] statistik) throws StatistikException { int summe = 0; @@ -98,8 +94,8 @@ public class Buchstabenzaehler { * @throws IOException generelles IO-Problem * @throws FileNotFoundException Datei gibt es nicht */ - private int[] parseFile(String filename) - throws IOException, FileNotFoundException { + private int[] parseFile(String filename) + throws IOException, FileNotFoundException { int[] statistik = new int['z' - 'a' + 1]; diff --git a/solutions/src/main/java/pr2/generics/einfach/Liste.java b/solutions/src/main/java/pr2/generics/einfach/Liste.java index 21f8251..320a8d5 100644 --- a/solutions/src/main/java/pr2/generics/einfach/Liste.java +++ b/solutions/src/main/java/pr2/generics/einfach/Liste.java @@ -5,7 +5,6 @@ package pr2.generics.einfach; * * @param Typ der gespeicherten Objekte */ - public class Liste { /** diff --git a/solutions/src/main/java/pr2/generics/einfach/ListeNode.java b/solutions/src/main/java/pr2/generics/einfach/ListeNode.java index 01d83eb..819357c 100644 --- a/solutions/src/main/java/pr2/generics/einfach/ListeNode.java +++ b/solutions/src/main/java/pr2/generics/einfach/ListeNode.java @@ -1,6 +1,5 @@ package pr2.generics.einfach; - /** * Interne Repräsentation der Knoten in der Liste. * diff --git a/solutions/src/main/java/pr2/generics/einfach/test/ListeTest.java b/solutions/src/main/java/pr2/generics/einfach/test/ListeTest.java index b9d09bc..2497f84 100644 --- a/solutions/src/main/java/pr2/generics/einfach/test/ListeTest.java +++ b/solutions/src/main/java/pr2/generics/einfach/test/ListeTest.java @@ -16,7 +16,7 @@ public class ListeTest { */ @Test void testAddAndClear() { - Liste l = new Liste<>(); + Liste l = new Liste<>(); assertEquals(0, l.size()); @@ -37,7 +37,7 @@ public class ListeTest { */ @Test void testGet() { - Liste l = new Liste<>(); + Liste l = new Liste<>(); l.add("Hallo"); l.add("Hugo"); l.add("Peter"); diff --git a/solutions/src/main/java/pr2/generics/number_pair/NumberPair.java b/solutions/src/main/java/pr2/generics/number_pair/NumberPair.java index beaa2cf..4819db7 100644 --- a/solutions/src/main/java/pr2/generics/number_pair/NumberPair.java +++ b/solutions/src/main/java/pr2/generics/number_pair/NumberPair.java @@ -1,6 +1,6 @@ package pr2.generics.number_pair; -public class NumberPair extends Pair { +public class NumberPair extends Pair { public NumberPair(T first, T second) { super(first, second); diff --git a/solutions/src/main/java/pr2/generics/pair/Pair.java b/solutions/src/main/java/pr2/generics/pair/Pair.java index 8680eb1..8afe59a 100644 --- a/solutions/src/main/java/pr2/generics/pair/Pair.java +++ b/solutions/src/main/java/pr2/generics/pair/Pair.java @@ -1,6 +1,6 @@ package pr2.generics.pair; -public class Pair { +public class Pair { private final T first; private final V second; diff --git a/solutions/src/main/java/pr2/generics/pairlist/PairList.java b/solutions/src/main/java/pr2/generics/pairlist/PairList.java index 0d6a7e1..b4299b6 100644 --- a/solutions/src/main/java/pr2/generics/pairlist/PairList.java +++ b/solutions/src/main/java/pr2/generics/pairlist/PairList.java @@ -1,6 +1,6 @@ package pr2.generics.pairlist; -public class PairList { +public class PairList { protected final Pair[] elements; protected int pos; diff --git a/solutions/src/main/java/pr2/generics/queue/Queue.java b/solutions/src/main/java/pr2/generics/queue/Queue.java index 258604a..4a88180 100644 --- a/solutions/src/main/java/pr2/generics/queue/Queue.java +++ b/solutions/src/main/java/pr2/generics/queue/Queue.java @@ -1,6 +1,6 @@ package pr2.generics.queue; -public class Queue { +public class Queue { private final T[] elements; private int pos = 0; diff --git a/solutions/src/main/java/pr2/generics/same_pair/SamePair.java b/solutions/src/main/java/pr2/generics/same_pair/SamePair.java index 32323a8..5ce5c81 100644 --- a/solutions/src/main/java/pr2/generics/same_pair/SamePair.java +++ b/solutions/src/main/java/pr2/generics/same_pair/SamePair.java @@ -1,6 +1,6 @@ package pr2.generics.same_pair; -public class SamePair extends Pair { +public class SamePair extends Pair { public SamePair(T first, T second) { super(first, second); diff --git a/solutions/src/main/java/pr2/generics/wildcards/Main.java b/solutions/src/main/java/pr2/generics/wildcards/Main.java index 6401bdc..3a51e88 100644 --- a/solutions/src/main/java/pr2/generics/wildcards/Main.java +++ b/solutions/src/main/java/pr2/generics/wildcards/Main.java @@ -32,8 +32,8 @@ public final class Main { l2.add(4); l2.add(5); - ListHelper.printList(l1); - ListHelper.printList(l2); - System.out.println(ListHelper.sumList(l2)); + ListHelper.printList(l1); + ListHelper.printList(l2); + System.out.println(ListHelper.sumList(l2)); } } diff --git a/solutions/src/main/java/pr2/interfaces/abstrakt_form/Form.java b/solutions/src/main/java/pr2/interfaces/abstrakt_form/Form.java index 6ea1f70..c955bac 100644 --- a/solutions/src/main/java/pr2/interfaces/abstrakt_form/Form.java +++ b/solutions/src/main/java/pr2/interfaces/abstrakt_form/Form.java @@ -1,6 +1,6 @@ package pr2.interfaces.abstrakt_form; -public abstract class Form { +public abstract class Form { protected double x; protected double y; diff --git a/solutions/src/main/java/pr2/interfaces/comparable_student/Student.java b/solutions/src/main/java/pr2/interfaces/comparable_student/Student.java index 13ab812..cf96d2f 100644 --- a/solutions/src/main/java/pr2/interfaces/comparable_student/Student.java +++ b/solutions/src/main/java/pr2/interfaces/comparable_student/Student.java @@ -1,6 +1,6 @@ package pr2.interfaces.comparable_student; -public class Student implements Comparable { +public class Student implements Comparable { private final String vorname; private final String nachname; diff --git a/solutions/src/main/java/pr2/interfaces/stack/StackImpl.java b/solutions/src/main/java/pr2/interfaces/stack/StackImpl.java index 2d286e0..a418c3d 100644 --- a/solutions/src/main/java/pr2/interfaces/stack/StackImpl.java +++ b/solutions/src/main/java/pr2/interfaces/stack/StackImpl.java @@ -1,6 +1,6 @@ package pr2.interfaces.stack; -public class StackImpl implements Stack { +public class StackImpl implements Stack { private final Object[] puffer; private int pos = -1; diff --git a/solutions/src/main/java/pr2/interfaces/uebersetzer/Translator.java b/solutions/src/main/java/pr2/interfaces/uebersetzer/Translator.java index e65a2b2..a9a46c6 100644 --- a/solutions/src/main/java/pr2/interfaces/uebersetzer/Translator.java +++ b/solutions/src/main/java/pr2/interfaces/uebersetzer/Translator.java @@ -1,4 +1,3 @@ - package pr2.interfaces.uebersetzer; public class Translator { diff --git a/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschEnglisch.java b/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschEnglisch.java index e5d1ebc..fc1d14b 100644 --- a/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschEnglisch.java +++ b/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschEnglisch.java @@ -1,4 +1,3 @@ - package pr2.interfaces.uebersetzer; public class UebersetzerDeutschEnglisch implements Uebersetzer { diff --git a/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschSpanisch.java b/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschSpanisch.java index 9877392..9c9c7cc 100644 --- a/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschSpanisch.java +++ b/solutions/src/main/java/pr2/interfaces/uebersetzer/UebersetzerDeutschSpanisch.java @@ -1,4 +1,3 @@ - package pr2.interfaces.uebersetzer; public class UebersetzerDeutschSpanisch implements Uebersetzer { diff --git a/solutions/src/main/java/pr2/intro/coding_standard/CodingStandard.java b/solutions/src/main/java/pr2/intro/coding_standard/CodingStandard.java index fcdc9b9..ec56c7f 100644 --- a/solutions/src/main/java/pr2/intro/coding_standard/CodingStandard.java +++ b/solutions/src/main/java/pr2/intro/coding_standard/CodingStandard.java @@ -4,7 +4,6 @@ package pr2.intro.coding_standard; * Klasse dient als Beispiel für den Coding-Standard und die Namenskonventionen * bei Java-Programmen. */ - @SuppressWarnings("PMD.UnusedPrivateField") public class CodingStandard { diff --git a/solutions/src/main/java/pr2/intro/javadoc/Waehrung.java b/solutions/src/main/java/pr2/intro/javadoc/Waehrung.java index bb8fac1..f9ad19b 100644 --- a/solutions/src/main/java/pr2/intro/javadoc/Waehrung.java +++ b/solutions/src/main/java/pr2/intro/javadoc/Waehrung.java @@ -1,6 +1,5 @@ package pr2.intro.javadoc; - /** * Objekte dieser Klasse repräsentieren eine Währung. Eine Währung zeichnet * sich durch einen Namen (z.B. EURO), ein Kürzel (z.B. € oder EUR) und einen diff --git a/solutions/src/main/java/pr2/io/file/FilesystemWalker.java b/solutions/src/main/java/pr2/io/file/FilesystemWalker.java index d34770d..d4ee6de 100644 --- a/solutions/src/main/java/pr2/io/file/FilesystemWalker.java +++ b/solutions/src/main/java/pr2/io/file/FilesystemWalker.java @@ -70,7 +70,7 @@ public class FilesystemWalker { throw new RuntimeException(e); } - return size; + return size; } /** diff --git a/solutions/src/main/java/pr2/io/filter/UCaseReader.java b/solutions/src/main/java/pr2/io/filter/UCaseReader.java index 672e75e..7cc694d 100644 --- a/solutions/src/main/java/pr2/io/filter/UCaseReader.java +++ b/solutions/src/main/java/pr2/io/filter/UCaseReader.java @@ -7,7 +7,7 @@ import java.io.Reader; /** * Filter-Reader, der den Inhalt in Großbuchstaben umwandelt. */ -public class UCaseReader extends FilterReader { +public class UCaseReader extends FilterReader { /** diff --git a/solutions/src/main/java/pr2/io/rot13/Rot13Reader.java b/solutions/src/main/java/pr2/io/rot13/Rot13Reader.java index 04cb929..4ebb983 100644 --- a/solutions/src/main/java/pr2/io/rot13/Rot13Reader.java +++ b/solutions/src/main/java/pr2/io/rot13/Rot13Reader.java @@ -4,7 +4,7 @@ import java.io.FilterReader; import java.io.IOException; import java.io.Reader; -public class Rot13Reader extends FilterReader { +public class Rot13Reader extends FilterReader { public Rot13Reader(Reader in) { super(in); diff --git a/solutions/src/main/java/pr2/io/serialisierung/Board.java b/solutions/src/main/java/pr2/io/serialisierung/Board.java index f40fa6b..de5e085 100644 --- a/solutions/src/main/java/pr2/io/serialisierung/Board.java +++ b/solutions/src/main/java/pr2/io/serialisierung/Board.java @@ -39,7 +39,7 @@ public class Board implements Serializable { throw new IOException("Serialization: Class not found", e); } - return result; + return result; } /** diff --git a/solutions/src/main/java/pr2/lambda/callback/Main.java b/solutions/src/main/java/pr2/lambda/callback/Main.java index b493c8f..a3ad37a 100644 --- a/solutions/src/main/java/pr2/lambda/callback/Main.java +++ b/solutions/src/main/java/pr2/lambda/callback/Main.java @@ -20,7 +20,7 @@ public class Main { NumberSelector s = new NumberSelector(); - int[] gerade; + int[] gerade; gerade = s.filter(new Predicate() { @Override @@ -31,7 +31,7 @@ public class Main { System.out.println(Arrays.toString(gerade)); - int[] ungerade; + int[] ungerade; ungerade = s.filter(new Predicate() { @Override diff --git a/solutions/src/main/java/pr2/lambda/lambdas/Main.java b/solutions/src/main/java/pr2/lambda/lambdas/Main.java index bbca68e..85460bc 100644 --- a/solutions/src/main/java/pr2/lambda/lambdas/Main.java +++ b/solutions/src/main/java/pr2/lambda/lambdas/Main.java @@ -20,11 +20,11 @@ public class Main { NumberSelector s = new NumberSelector(); - int[] gerade = s.filter((i) -> i % 2 == 0, ZAHLEN); + int[] gerade = s.filter((i) -> i % 2 == 0, ZAHLEN); System.out.println(Arrays.toString(gerade)); - int[] ungerade = s.filter((i) -> i % 2 != 0, ZAHLEN); + int[] ungerade = s.filter((i) -> i % 2 != 0, ZAHLEN); System.out.println(Arrays.toString(ungerade)); } diff --git a/solutions/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java b/solutions/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java index 9d98357..6fca817 100644 --- a/solutions/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java +++ b/solutions/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java @@ -1,6 +1,6 @@ package pr2.lambda.mogrifier_1; -@FunctionalInterface +@FunctionalInterface public interface StringFunction { - String apply(String s); + String apply(String s); } diff --git a/solutions/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java b/solutions/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java index 070ee01..11d9608 100644 --- a/solutions/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java +++ b/solutions/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java @@ -1,6 +1,6 @@ package pr2.lambda.mogrifier_2; -@FunctionalInterface +@FunctionalInterface public interface StringFunction { static StringFunction caesar(final int shift) { return (s) -> shiftCharacters(s, shift); diff --git a/solutions/src/main/java/pr2/lambda/observer/Datenhalter.java b/solutions/src/main/java/pr2/lambda/observer/Datenhalter.java index d3e2218..9eb10d5 100644 --- a/solutions/src/main/java/pr2/lambda/observer/Datenhalter.java +++ b/solutions/src/main/java/pr2/lambda/observer/Datenhalter.java @@ -1,4 +1,3 @@ - package pr2.lambda.observer; public class Datenhalter { diff --git a/solutions/src/main/java/pr2/lambda/observer/DatenhalterAnonym.java b/solutions/src/main/java/pr2/lambda/observer/DatenhalterAnonym.java index fe4b99f..b2f2d64 100644 --- a/solutions/src/main/java/pr2/lambda/observer/DatenhalterAnonym.java +++ b/solutions/src/main/java/pr2/lambda/observer/DatenhalterAnonym.java @@ -1,4 +1,3 @@ - package pr2.lambda.observer; public class DatenhalterAnonym { diff --git a/solutions/src/main/java/pr2/lambda/observer/test/BeobachterTest.java b/solutions/src/main/java/pr2/lambda/observer/test/BeobachterTest.java index c3d9e72..24e643a 100644 --- a/solutions/src/main/java/pr2/lambda/observer/test/BeobachterTest.java +++ b/solutions/src/main/java/pr2/lambda/observer/test/BeobachterTest.java @@ -1,4 +1,3 @@ - package pr2.lambda.observer.test; import org.junit.jupiter.api.Test; diff --git a/solutions/src/main/java/pr2/object/clone_alien/Alien.java b/solutions/src/main/java/pr2/object/clone_alien/Alien.java index b993a4a..65f7132 100644 --- a/solutions/src/main/java/pr2/object/clone_alien/Alien.java +++ b/solutions/src/main/java/pr2/object/clone_alien/Alien.java @@ -3,7 +3,7 @@ package pr2.object.clone_alien; /** * Ein Alien. */ -public class Alien implements Cloneable { +public class Alien implements Cloneable { /** * Name des Aliens. diff --git a/solutions/src/main/java/pr2/object/clone_alien/Raumanzug.java b/solutions/src/main/java/pr2/object/clone_alien/Raumanzug.java index ae4171e..b17cde6 100644 --- a/solutions/src/main/java/pr2/object/clone_alien/Raumanzug.java +++ b/solutions/src/main/java/pr2/object/clone_alien/Raumanzug.java @@ -3,7 +3,7 @@ package pr2.object.clone_alien; /** * Ein Raumanzug. */ -public class Raumanzug implements Cloneable { +public class Raumanzug implements Cloneable { /** * Sauerstoffvorrat, der noch im Raumanzug ist. diff --git a/solutions/src/main/java/pr2/object/clone_person/Person.java b/solutions/src/main/java/pr2/object/clone_person/Person.java index 8f69899..b95b0c9 100644 --- a/solutions/src/main/java/pr2/object/clone_person/Person.java +++ b/solutions/src/main/java/pr2/object/clone_person/Person.java @@ -2,7 +2,7 @@ package pr2.object.clone_person; import java.util.Date; -public class Person implements Cloneable { +public class Person implements Cloneable { private final String vorname = ""; private final String nachname = ""; diff --git a/solutions/src/main/java/pr2/object/wrapper_umwandler/Umwandler.java b/solutions/src/main/java/pr2/object/wrapper_umwandler/Umwandler.java index 53090d4..7499a05 100644 --- a/solutions/src/main/java/pr2/object/wrapper_umwandler/Umwandler.java +++ b/solutions/src/main/java/pr2/object/wrapper_umwandler/Umwandler.java @@ -31,7 +31,7 @@ public final class Umwandler { * @return Umgewandelte Zahl */ public static int fromString(String s) { - return Integer.parseInt(s); + return Integer.parseInt(s); } /** diff --git a/solutions/src/main/java/pr2/streams/chars_1/CountLetters.java b/solutions/src/main/java/pr2/streams/chars_1/CountLetters.java new file mode 100644 index 0000000..d9b86c9 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_1/CountLetters.java @@ -0,0 +1,13 @@ +package pr2.streams.chars_1; + +public class CountLetters { + public static long count(String s) { + long sum; + + sum = s.chars() + .filter(Character::isLowerCase) + .count(); + + return sum; + } +} diff --git a/solutions/src/main/java/pr2/streams/chars_1/test/CountLettersTest.java b/solutions/src/main/java/pr2/streams/chars_1/test/CountLettersTest.java new file mode 100644 index 0000000..963c9ca --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_1/test/CountLettersTest.java @@ -0,0 +1,16 @@ +package pr2.streams.chars_1.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.chars_1.CountLetters; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CountLettersTest { + @Test + void testCount() { + String s = "Dies ist ein String mit einer ganzen Reihe von " + + "Buchstaben."; + + assertEquals(44, CountLetters.count(s)); + } +} diff --git a/solutions/src/main/java/pr2/streams/chars_2/CountLetters.java b/solutions/src/main/java/pr2/streams/chars_2/CountLetters.java new file mode 100644 index 0000000..c13bdfb --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_2/CountLetters.java @@ -0,0 +1,16 @@ +package pr2.streams.chars_2; + +import java.util.List; + +public class CountLetters { + public static long count(List liste) { + + long chars; + + chars = liste.stream() + .flatMapToInt(s -> s.chars()) + .count(); + + return chars; + } +} diff --git a/solutions/src/main/java/pr2/streams/chars_2/test/CountLettersTest.java b/solutions/src/main/java/pr2/streams/chars_2/test/CountLettersTest.java new file mode 100644 index 0000000..462bde7 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_2/test/CountLettersTest.java @@ -0,0 +1,19 @@ +package pr2.streams.chars_2.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.chars_2.CountLetters; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CountLettersTest { + @Test + void testCount() { + List liste = Arrays.asList("Hallo", "Welt", "wie", "geht", + "es"); + + assertEquals(18, CountLetters.count(liste)); + } +} diff --git a/solutions/src/main/java/pr2/streams/chars_3/CountLetters.java b/solutions/src/main/java/pr2/streams/chars_3/CountLetters.java new file mode 100644 index 0000000..b2b43e0 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_3/CountLetters.java @@ -0,0 +1,17 @@ +package pr2.streams.chars_3; + +import java.util.List; + +public class CountLetters { + public static long count(List liste) { + + long chars; + + chars = liste.stream() + .flatMapToInt(s -> s.chars()) + .filter(Character::isLowerCase) + .count(); + + return chars; + } +} diff --git a/solutions/src/main/java/pr2/streams/chars_3/test/CountLettersTest.java b/solutions/src/main/java/pr2/streams/chars_3/test/CountLettersTest.java new file mode 100644 index 0000000..f547780 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/chars_3/test/CountLettersTest.java @@ -0,0 +1,19 @@ +package pr2.streams.chars_3.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.chars_3.CountLetters; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class CountLettersTest { + @Test + void testCount() { + List liste = Arrays.asList("Hallo", "Welt", "wie", "geht", + "es"); + + assertEquals(16, CountLetters.count(liste)); + } +} diff --git a/solutions/src/main/java/pr2/streams/filter/FilterList.java b/solutions/src/main/java/pr2/streams/filter/FilterList.java new file mode 100644 index 0000000..99c64a7 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/filter/FilterList.java @@ -0,0 +1,17 @@ +package pr2.streams.filter; + +import java.util.List; +import java.util.stream.Collectors; + +public class FilterList { + public static List filter(List liste) { + List result; + + result = liste.stream() + .filter(s -> s.length() >= 5) + .map(String::toLowerCase) + .collect(Collectors.toList()); + + return result; + } +} diff --git a/solutions/src/main/java/pr2/streams/filter/test/FilterListTest.java b/solutions/src/main/java/pr2/streams/filter/test/FilterListTest.java new file mode 100644 index 0000000..a807aec --- /dev/null +++ b/solutions/src/main/java/pr2/streams/filter/test/FilterListTest.java @@ -0,0 +1,25 @@ +package pr2.streams.filter.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.filter.FilterList; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class FilterListTest { + + @Test + void testFilter() { + List liste = Arrays.asList( + "Hallo", "Welt", "Dampfschifffahrt", "Hundekuchen", + "Fiction", "Java", "Visual Basic", "Drucker"); + + List result = Arrays.asList( + "hallo", "dampfschifffahrt", "hundekuchen", + "fiction", "visual basic", "drucker"); + + assertEquals(result, FilterList.filter(liste)); + } +} diff --git a/solutions/src/main/java/pr2/streams/interne_iteration/ComputerGame.java b/solutions/src/main/java/pr2/streams/interne_iteration/ComputerGame.java new file mode 100644 index 0000000..ad9ef21 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/interne_iteration/ComputerGame.java @@ -0,0 +1,87 @@ +package pr2.streams.interne_iteration; + +/** + * Computerspiel. + */ +public class ComputerGame { + + /** + * Name. + */ + private final String name; + + /** + * Jahr. + */ + private final int year; + + /** + * Metacritic. + */ + private final int metaScore; + + /** + * Userscore. + */ + private final int userScore; + + /** + * Legt ein neues Spiel an. + * + * @param name Name des Spiels. + * @param year Jahr. + * @param metaScore Metacritic-Bewertung. + * @param userScore Nutzer-Bewertung. + */ + public ComputerGame(String name, int year, int metaScore, int userScore) { + this.name = name; + this.year = year; + this.metaScore = metaScore; + this.userScore = userScore; + } + + /** + * Name des Spiels. + * + * @return Der Name + */ + public String getName() { + return name; + } + + /** + * Jahr, in dem das Spiel erschienen ist bzw. kritisiert wurde. + * + * @return Das Erscheinungsjahr. + */ + public int getYear() { + return year; + } + + /** + * Die Metacritic-Bewertung (0-100). + * + * @return Die Bewertung. + */ + public int getMetaScore() { + return metaScore; + } + + /** + * Die Benutzerbewertung (0-100). + * + * @return Die Benutzerbewertung. + */ + public int getUserScore() { + return userScore; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return String.format("%d;%s;%s;%d", metaScore, name, userScore / 10.0, + year); + } +} diff --git a/solutions/src/main/java/pr2/streams/interne_iteration/GameDatabase.java b/solutions/src/main/java/pr2/streams/interne_iteration/GameDatabase.java new file mode 100644 index 0000000..be8483f --- /dev/null +++ b/solutions/src/main/java/pr2/streams/interne_iteration/GameDatabase.java @@ -0,0 +1,61 @@ +package pr2.streams.interne_iteration; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * Datenbank für die Spiele. + */ +public class GameDatabase { + + private final List games; + + /** + * Datenbank mit Spieleinfomrationen. + */ + @SuppressWarnings("deprecation") + public GameDatabase() { + games = new ArrayList<>(); + + try { + BufferedReader br = + new BufferedReader(new FileReader( + "games.txt")); + + String line; + + while ((line = br.readLine()) != null) { + String[] tokens = line.split(";"); + int metacritic = Integer.parseInt(tokens[0]); + String name = tokens[1]; + int userScore = (int) (Double.parseDouble(tokens[2]) * 10); + Date date = + new SimpleDateFormat("MMM d, yyyy", Locale.US).parse( + tokens[3]); + + games.add(new ComputerGame(name, date.getYear() + 1900, + metacritic, userScore)); + } + + br.close(); + } catch (IOException | ParseException ex) { + ex.printStackTrace(); + } + } + + /** + * Gibt die Liste der Spiele zurück. + * + * @return Liste der Spiele + */ + public List getGames() { + return new ArrayList<>(games); + } +} diff --git a/solutions/src/main/java/pr2/streams/interne_iteration/ListGames.java b/solutions/src/main/java/pr2/streams/interne_iteration/ListGames.java new file mode 100644 index 0000000..e9cce9b --- /dev/null +++ b/solutions/src/main/java/pr2/streams/interne_iteration/ListGames.java @@ -0,0 +1,39 @@ +package pr2.streams.interne_iteration; + +import java.util.stream.Stream; + +/** + * Spiele auflisten. + */ +public class ListGames { + + /** + * Hauptmethode. + * + * @param args Kommandozeilenargumente. + */ + public static void main(String[] args) { + GameDatabase db = new GameDatabase(); + + System.out.println("Interne Iterartion"); + System.out.println(); + Stream stream = db.getGames().stream(); + stream.forEach(g -> System.out.println(g)); + + System.out.println(); + System.out.println(); + System.out.println("Interne Iterartion mit Methodenreferenz"); + stream = db.getGames().stream(); + stream.forEach(System.out::println); + + System.out.println(); + System.out.println(); + System.out.println("Spiele aus 2012"); + stream = db.getGames().stream(); + stream.forEach(g -> { + if (g.getYear() == 2012) { + System.out.println(g); + } + }); + } +} diff --git a/solutions/src/main/java/pr2/streams/map_filter/ComputerGame.java b/solutions/src/main/java/pr2/streams/map_filter/ComputerGame.java new file mode 100644 index 0000000..c85cb86 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/map_filter/ComputerGame.java @@ -0,0 +1,88 @@ +package pr2.streams.map_filter; + +/** + * Computerspiel. + */ +public class ComputerGame { + + /** + * Name. + */ + private final String name; + + /** + * Jahr. + */ + private final int year; + + /** + * Metacritic. + */ + private final int metaScore; + + /** + * Userscore. + */ + private final int userScore; + + /** + * Legt ein neues Spiel an. + * + * @param name Name des Spiels. + * @param year Jahr. + * @param metaScore Metacritic-Bewertung. + * @param userScore Nutzer-Bewertung. + */ + public ComputerGame(String name, int year, int metaScore, int userScore) { + + this.name = name; + this.year = year; + this.metaScore = metaScore; + this.userScore = userScore; + } + + /** + * Name des Spiels. + * + * @return Der Name + */ + public String getName() { + return name; + } + + /** + * Jahr, in dem das Spiel erschienen ist bzw. kritisiert wurde. + * + * @return Das Erscheinungsjahr. + */ + public int getYear() { + return year; + } + + /** + * Die Metacritic-Bewertung (0-100). + * + * @return Die Bewertung. + */ + public int getMetaScore() { + return metaScore; + } + + /** + * Die Benutzerbewertung (0-100). + * + * @return Die Benutzerbewertung. + */ + public int getUserScore() { + return userScore; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return String.format("%d;%s;%s;%d", metaScore, name, userScore / 10.0, + year); + } +} diff --git a/solutions/src/main/java/pr2/streams/map_filter/GameDatabase.java b/solutions/src/main/java/pr2/streams/map_filter/GameDatabase.java new file mode 100644 index 0000000..863ff18 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/map_filter/GameDatabase.java @@ -0,0 +1,61 @@ +package pr2.streams.map_filter; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * Datenbank für die Spiele. + */ +public class GameDatabase { + + private final List games; + + /** + * Datenbank mit Spieleinfomrationen. + */ + @SuppressWarnings("deprecation") + public GameDatabase() { + games = new ArrayList<>(); + + try { + BufferedReader br = + new BufferedReader(new FileReader( + "games.txt")); + + String line; + + while ((line = br.readLine()) != null) { + String[] tokens = line.split(";"); + int metacritic = Integer.parseInt(tokens[0]); + String name = tokens[1]; + int userScore = (int) (Double.parseDouble(tokens[2]) * 10); + Date date = + new SimpleDateFormat("MMM d, yyyy", Locale.US).parse( + tokens[3]); + + games.add(new ComputerGame(name, date.getYear() + 1900, + metacritic, userScore)); + } + + br.close(); + } catch (IOException | ParseException ex) { + ex.printStackTrace(); + } + } + + /** + * Gibt die Liste der Spiele zurück. + * + * @return Liste der Spiele + */ + public List getGames() { + return new ArrayList<>(games); + } +} diff --git a/solutions/src/main/java/pr2/streams/map_filter/MapFilterGames.java b/solutions/src/main/java/pr2/streams/map_filter/MapFilterGames.java new file mode 100644 index 0000000..f9d095f --- /dev/null +++ b/solutions/src/main/java/pr2/streams/map_filter/MapFilterGames.java @@ -0,0 +1,47 @@ +package pr2.streams.map_filter; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Stream; + +/** + * Spiele auflisten. + */ +public class MapFilterGames { + + /** + * Hauptmethode. + * + * @param args Kommandozeilenargumente. + */ + public static void main(String[] args) { + GameDatabase db = new GameDatabase(); + List games = db.getGames(); + + // Alle Spiele von 2010 mit einem Metascore >= 80 + // und einem User-Score >= 80 + Stream stream = games.stream(); + stream.filter(g -> g.getYear() == 2010) + .filter(g -> g.getMetaScore() >= 80) + .filter(g -> g.getUserScore() >= 80).forEach( + System.out::println); + + // Größter und kleinster Unterschied + stream = games.stream(); + Optional o = stream.max((a, b) -> ( + a.getMetaScore() - a.getUserScore() - b.getMetaScore() + + b.getUserScore())); + if (o.isPresent()) { + System.out.println("Größte Abweichung: " + o.get()); + } + + stream = games.stream(); + o = stream.min((a, b) -> ( + a.getMetaScore() - a.getUserScore() - b.getMetaScore() + + b.getUserScore())); + + if (o.isPresent()) { + System.out.println("Kleinste Abweichung: " + o.get()); + } + } +} diff --git a/solutions/src/main/java/pr2/streams/reduce/Squarer.java b/solutions/src/main/java/pr2/streams/reduce/Squarer.java new file mode 100644 index 0000000..22cad1e --- /dev/null +++ b/solutions/src/main/java/pr2/streams/reduce/Squarer.java @@ -0,0 +1,25 @@ +package pr2.streams.reduce; + +import java.util.List; + +import static java.util.stream.Collectors.summingInt; + +public class Squarer { + public static int mitMap(List zahlen) { + //= Arrays.asList(1, 5, 8, 9, 12, 10, 3); + int mitMap; + + mitMap = zahlen.stream() + .map(e -> e * e) + .collect(summingInt(e -> e)); + return mitMap; + } + + public static int ohneMap(List zahlen) { + int ohneMap; + ohneMap = zahlen.stream() + .reduce((a, b) -> a + b * b) + .orElse(0); + return ohneMap; + } +} diff --git a/solutions/src/main/java/pr2/streams/reduce/test/SquarerTest.java b/solutions/src/main/java/pr2/streams/reduce/test/SquarerTest.java new file mode 100644 index 0000000..638f9c2 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/reduce/test/SquarerTest.java @@ -0,0 +1,26 @@ +package pr2.streams.reduce.test; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import pr2.streams.reduce.Squarer; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SquarerTest { + + @Test + void testMitMap() { + List l = Arrays.asList(1, 5, 8, 9, 12, 10, 3); + Assertions.assertEquals(424, Squarer.mitMap(l)); + } + + @Test + void testOhneMap() { + List l = Arrays.asList(1, 5, 8, 9, 12, 10, 3); + assertEquals(424, Squarer.ohneMap(l)); + } + +} diff --git a/solutions/src/main/java/pr2/streams/reduce_critics/ComputerGame.java b/solutions/src/main/java/pr2/streams/reduce_critics/ComputerGame.java new file mode 100644 index 0000000..4410562 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/reduce_critics/ComputerGame.java @@ -0,0 +1,88 @@ +package pr2.streams.reduce_critics; + +/** + * Computerspiel. + */ +public class ComputerGame { + + /** + * Name. + */ + private final String name; + + /** + * Jahr. + */ + private final int year; + + /** + * Metacritic. + */ + private final int metaScore; + + /** + * Userscore. + */ + private final int userScore; + + /** + * Legt ein neues Spiel an. + * + * @param name Name des Spiels. + * @param year Jahr. + * @param metaScore Metacritic-Bewertung. + * @param userScore Nutzer-Bewertung. + */ + public ComputerGame(String name, int year, int metaScore, int userScore) { + + this.name = name; + this.year = year; + this.metaScore = metaScore; + this.userScore = userScore; + } + + /** + * Name des Spiels. + * + * @return Der Name + */ + public String getName() { + return name; + } + + /** + * Jahr, in dem das Spiel erschienen ist bzw. kritisiert wurde. + * + * @return Das Erscheinungsjahr. + */ + public int getYear() { + return year; + } + + /** + * Die Metacritic-Bewertung (0-100). + * + * @return Die Bewertung. + */ + public int getMetaScore() { + return metaScore; + } + + /** + * Die Benutzerbewertung (0-100). + * + * @return Die Benutzerbewertung. + */ + public int getUserScore() { + return userScore; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return String.format("%d;%s;%s;%d", metaScore, name, userScore / 10.0, + year); + } +} diff --git a/solutions/src/main/java/pr2/streams/reduce_critics/GameDatabase.java b/solutions/src/main/java/pr2/streams/reduce_critics/GameDatabase.java new file mode 100644 index 0000000..771b8d4 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/reduce_critics/GameDatabase.java @@ -0,0 +1,61 @@ +package pr2.streams.reduce_critics; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * Datenbank für die Spiele. + */ +public class GameDatabase { + + private final List games; + + /** + * Datenbank mit Spieleinfomrationen. + */ + @SuppressWarnings("deprecation") + public GameDatabase() { + games = new ArrayList<>(); + + try { + BufferedReader br = + new BufferedReader( + new FileReader("games.txt")); + + String line; + + while ((line = br.readLine()) != null) { + String[] tokens = line.split(";"); + int metacritic = Integer.parseInt(tokens[0]); + String name = tokens[1]; + int userScore = (int) (Double.parseDouble(tokens[2]) * 10); + Date date = + new SimpleDateFormat("MMM d, yyyy", Locale.US).parse( + tokens[3]); + + games.add(new ComputerGame(name, date.getYear() + 1900, + metacritic, userScore)); + } + + br.close(); + } catch (IOException | ParseException ex) { + ex.printStackTrace(); + } + } + + /** + * Gibt die Liste der Spiele zurück. + * + * @return Liste der Spiele + */ + public List getGames() { + return new ArrayList<>(games); + } +} diff --git a/solutions/src/main/java/pr2/streams/reduce_critics/MapReduceGames.java b/solutions/src/main/java/pr2/streams/reduce_critics/MapReduceGames.java new file mode 100644 index 0000000..265191b --- /dev/null +++ b/solutions/src/main/java/pr2/streams/reduce_critics/MapReduceGames.java @@ -0,0 +1,41 @@ +package pr2.streams.reduce_critics; + +import java.util.List; +import java.util.stream.Stream; + +/** + * Spiele auflisten. + */ +public class MapReduceGames { + + /** + * Hauptmethode. + * + * @param args Kommandozeilenargumente. + */ + public static void main(String[] args) { + GameDatabase db = new GameDatabase(); + List games = db.getGames(); + + // Abweichung des Metascores von dem Userscore + // als quadratisches Mittel berechnen. + Stream stream = games.stream(); + + double rms = stream.map(g -> g.getMetaScore() - g.getUserScore()) + .map(g -> g * g) + .reduce(0, (sum, value) -> sum + value); + rms /= games.size(); + rms = Math.sqrt(rms); + + // Abweichung als arithmetisches Mittel + stream = games.stream(); + double mittelwert = stream.map( + g -> g.getMetaScore() - g.getUserScore()) + .reduce(0, (sum, value) -> sum + value); + mittelwert /= games.size(); + + System.out.printf("Abweichung Metascore: Durchschnitt=%.2f%n", + mittelwert); + System.out.printf("Abweichung Metascore: RMS=%.2f%n", rms); + } +} diff --git a/solutions/src/main/java/pr2/streams/summieren/SumUp.java b/solutions/src/main/java/pr2/streams/summieren/SumUp.java new file mode 100644 index 0000000..71ae1a1 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/summieren/SumUp.java @@ -0,0 +1,11 @@ +package pr2.streams.summieren; + +import java.util.stream.Stream; + +public class SumUp { + public static int sumUp(Stream numbers) { + int result; + result = numbers.reduce(0, (x, y) -> x + y); + return result; + } +} diff --git a/solutions/src/main/java/pr2/streams/summieren/test/SumUpTest.java b/solutions/src/main/java/pr2/streams/summieren/test/SumUpTest.java new file mode 100644 index 0000000..bec5b46 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/summieren/test/SumUpTest.java @@ -0,0 +1,18 @@ +package pr2.streams.summieren.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.summieren.SumUp; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SumUpTest { + + @Test + void testSum() { + List l = Arrays.asList(1, 5, 8, 9, 12, 10, 3); + assertEquals(48, SumUp.sumUp(l.stream())); + } +} diff --git a/solutions/src/main/java/pr2/streams/word_count/WordCount.java b/solutions/src/main/java/pr2/streams/word_count/WordCount.java new file mode 100644 index 0000000..299dd1a --- /dev/null +++ b/solutions/src/main/java/pr2/streams/word_count/WordCount.java @@ -0,0 +1,20 @@ +package pr2.streams.word_count; + +import java.util.List; + +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.toList; + +public class WordCount { + public static List count(List liste) { + List result; + + result = liste.stream() + .collect(groupingBy(s -> s)) + .entrySet().stream() + .map(e -> e.getKey() + "->" + e.getValue().size()) + .collect(toList()); + + return result; + } +} diff --git a/solutions/src/main/java/pr2/streams/word_count/test/WordCountTest.java b/solutions/src/main/java/pr2/streams/word_count/test/WordCountTest.java new file mode 100644 index 0000000..43dbcf8 --- /dev/null +++ b/solutions/src/main/java/pr2/streams/word_count/test/WordCountTest.java @@ -0,0 +1,21 @@ +package pr2.streams.word_count.test; + +import org.junit.jupiter.api.Test; +import pr2.streams.word_count.WordCount; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class WordCountTest { + + @Test + void testWordCount() { + List liste = Arrays.asList("A", "A", "B", "B", "B", "C", + "D", "D", "E", "E", "E", "F"); + + assertEquals(Arrays.asList("A->2", "B->3", "C->1", "D->2", + "E->3", "F->1"), WordCount.count(liste)); + } +} diff --git a/solutions/src/main/java/pr2/strukturierung/information_hiding/Rechner.java b/solutions/src/main/java/pr2/strukturierung/information_hiding/Rechner.java index 91b0377..42bdd2d 100644 --- a/solutions/src/main/java/pr2/strukturierung/information_hiding/Rechner.java +++ b/solutions/src/main/java/pr2/strukturierung/information_hiding/Rechner.java @@ -6,7 +6,7 @@ package pr2.strukturierung.information_hiding; public class Rechner { /** Speicher des Taschenrechners. */ - private double speicher; + private double speicher; /** * Addiert zwei Werte und gibt das Ergebnis zurück. @@ -15,8 +15,8 @@ public class Rechner { * @param b zweiter Operand. * @return das Ergebnis. */ - public double addiere(double a, double b) { - return a + b; + public double addiere(double a, double b) { + return a + b; } /** @@ -26,8 +26,8 @@ public class Rechner { * @param b zweiter Operand. * @return das Ergebnis. */ - public double subtrahiere(double a, double b) { - return a - b; + public double subtrahiere(double a, double b) { + return a - b; } /** @@ -37,8 +37,8 @@ public class Rechner { * @param b zweiter Operand. * @return das Ergebnis. */ - public double multipliziere(double a, double b) { - return a * b; + public double multipliziere(double a, double b) { + return a * b; } /** * Gibt den gespeicherten Wert zurück. diff --git a/solutions/src/main/java/pr2/threads/fakultaet/FakultaetParallel.java b/solutions/src/main/java/pr2/threads/fakultaet/FakultaetParallel.java new file mode 100644 index 0000000..2e141e9 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/fakultaet/FakultaetParallel.java @@ -0,0 +1,51 @@ +package pr2.threads.fakultaet; + +public class FakultaetParallel { + + private long[] ergebnisse; + + private long fact(long n) { + return (n == 0 ? 1 : n * fact(n - 1)); + } + + private class FactThread implements Runnable { + + int startPunkt; + int endPunkt; + + public FactThread(int startPunkt, int endPunkt) { + this.startPunkt = startPunkt; + this.endPunkt = endPunkt; + } + + @Override + public void run() { + + for (int n = startPunkt; n <= endPunkt; n++) { + ergebnisse[n] = fact(n); + } + } + } + + public long[] calculate(int bis) { + + if ((bis <= 0) || (bis > 20)) { + throw new IllegalArgumentException("0 < n <= 20"); + } + + ergebnisse = new long[bis + 1]; + + Thread t1 = new Thread(new FactThread(0, bis / 2)); + Thread t2 = new Thread(new FactThread(bis / 2, bis)); + t1.start(); + t2.start(); + try { + t1.join(); + t2.join(); + } catch (InterruptedException e) { + // ignorieren + } + + return ergebnisse.clone(); + } +} diff --git a/solutions/src/main/java/pr2/threads/fakultaet/Main.java b/solutions/src/main/java/pr2/threads/fakultaet/Main.java new file mode 100644 index 0000000..cf56f2d --- /dev/null +++ b/solutions/src/main/java/pr2/threads/fakultaet/Main.java @@ -0,0 +1,13 @@ +package pr2.threads.fakultaet; + +public class Main { + public static void main(String[] args) { + FakultaetParallel fp = new FakultaetParallel(); + long[] ergebnisse = fp.calculate(20); + + for (int i = 0; i < ergebnisse.length; i++) { + long ergebnis = ergebnisse[i]; + System.out.printf("fact(%d) = %d%n", i, ergebnis); + } + } +} diff --git a/solutions/src/main/java/pr2/threads/interrupt/ThreadsBeenden.java b/solutions/src/main/java/pr2/threads/interrupt/ThreadsBeenden.java new file mode 100644 index 0000000..3070d20 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/interrupt/ThreadsBeenden.java @@ -0,0 +1,26 @@ +package pr2.threads.interrupt; + +public class ThreadsBeenden { + + public static void main(String[] args) throws InterruptedException { + Thread t = new Thread(new Runnable() { + + @Override + public void run() { + while (!Thread.currentThread().isInterrupted()) { + System.out.println("Paralleler Thread"); + + try { + Thread.sleep(100); + } catch (InterruptedException e) { + break; + } + } + } + }); + + t.start(); + Thread.sleep(2000); + t.interrupt(); + } +} diff --git a/solutions/src/main/java/pr2/threads/notifier/Main.java b/solutions/src/main/java/pr2/threads/notifier/Main.java new file mode 100644 index 0000000..aa4f490 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/notifier/Main.java @@ -0,0 +1,40 @@ +package pr2.threads.notifier; + +public class Main { + + private static final int SLEEP_TIME = 200; + + public static void main(String[] args) { + + final Notifier notifier = new Notifier(); + + Runnable putter = () -> { + while (true) { + notifier.setString(Thread.currentThread().getName()); + try { + Thread.sleep(SLEEP_TIME); + } catch (InterruptedException e) { + return; + } + } + }; + + Runnable getter = () -> { + while (true) { + System.out.println(notifier.getString()); + + try { + Thread.sleep(SLEEP_TIME); + } catch (InterruptedException e) { + return; + } + } + }; + + new Thread(putter, "Putter 1").start(); + new Thread(putter, "Putter 2").start(); + new Thread(getter, "Getter 1").start(); + new Thread(getter, "Getter 2").start(); + new Thread(getter, "Getter 3").start(); + } +} diff --git a/solutions/src/main/java/pr2/threads/notifier/Notifier.java b/solutions/src/main/java/pr2/threads/notifier/Notifier.java new file mode 100644 index 0000000..2a8b373 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/notifier/Notifier.java @@ -0,0 +1,34 @@ +package pr2.threads.notifier; + +public class Notifier { + + private String theString; + + public synchronized String getString() { + while (theString == null) { + try { + wait(); + } catch (InterruptedException e) { + return null; // simply return + } + } + + String result = theString; + theString = null; + notifyAll(); + return result; + } + + public synchronized void setString(String string) { + while (theString != null) { + try { + wait(); + } catch (InterruptedException e) { + return; // simply return + } + } + + theString = string; + notifyAll(); + } +} diff --git a/solutions/src/main/java/pr2/threads/paralleldrucker/ParallelDrucker.java b/solutions/src/main/java/pr2/threads/paralleldrucker/ParallelDrucker.java new file mode 100644 index 0000000..ad44743 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/paralleldrucker/ParallelDrucker.java @@ -0,0 +1,25 @@ +package pr2.threads.paralleldrucker; + +public class ParallelDrucker { + + public static void main(String[] args) { + Thread t1 = new Thread(() -> { + while (true) { + System.out.println("Thread 1 speaking"); + } + }); + + Thread t2 = new Thread(() -> { + while (true) { + System.out.println("Thread 2 speaking"); + } + }); + + t1.start(); + t2.start(); + + while (true) { + System.out.println("Main Thread speaking"); + } + } +} diff --git a/solutions/src/main/java/pr2/threads/race_condition/Main.java b/solutions/src/main/java/pr2/threads/race_condition/Main.java new file mode 100644 index 0000000..ee66523 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/race_condition/Main.java @@ -0,0 +1,41 @@ +package pr2.threads.race_condition; + +import java.util.Arrays; +import java.util.List; + +/** + * Haupklasse. + */ +public class Main { + + /** + * Start-Methode. + * + * @param args Kommandozeilenargumente. + */ + public static void main(String[] args) { + + NumberList numbers = new NumberList(); + + // Threads anlegen + List threads = Arrays.asList( + new Thread(new NumberIncrementer(100000, numbers)), + new Thread(new NumberIncrementer(100000, numbers)), + new Thread(new NumberIncrementer(100000, numbers))); + + // Threads starten + threads.forEach(Thread::start); + + // Auf Ende der Threads warten + threads.forEach(t -> { + try { + t.join(); + } catch (InterruptedException e) { + // ignore + } + }); + + // Zahlen überprüfen + numbers.check(); + } +} diff --git a/solutions/src/main/java/pr2/threads/race_condition/NumberIncrementer.java b/solutions/src/main/java/pr2/threads/race_condition/NumberIncrementer.java new file mode 100644 index 0000000..d72a590 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/race_condition/NumberIncrementer.java @@ -0,0 +1,42 @@ +package pr2.threads.race_condition; + +/** + * Runnable, dass Zahlen inkrementieren kann. + */ +public class NumberIncrementer implements Runnable { + + /** + * Zahl, bis zu der gearbeitet werden soll. + */ + private final int boundary; + + /** + * Speicher für die generierten Zahlen. + */ + private final NumberList numberList; + + /** + * Legt ein neues Objekt an. + * + * @param boundary Obergrenze für die Generierung + * @param numberList Speicher für die Zahlen + */ + public NumberIncrementer(int boundary, NumberList numberList) { + this.boundary = boundary; + this.numberList = numberList; + } + + /** + * @see java.lang.Runnable#run() + */ + @Override + public void run() { + for (int i = 0; i < boundary; i++) { + synchronized (numberList) { + int lastNum = numberList.getLastNumber(); + lastNum++; + numberList.add(lastNum); + } + } + } +} diff --git a/solutions/src/main/java/pr2/threads/race_condition/NumberList.java b/solutions/src/main/java/pr2/threads/race_condition/NumberList.java new file mode 100644 index 0000000..c5ba3f5 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/race_condition/NumberList.java @@ -0,0 +1,60 @@ +package pr2.threads.race_condition; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Einfache Sammlung von Zahlen. + */ +public class NumberList { + + /** + * Die gespeicherten Zahlen. + */ + private final List numbers = + Collections.synchronizedList(new ArrayList<>()); + + /** + * Die letzte Zahl, die gespeichert wurde. + */ + private int lastNumber; + + /** + * Liefert die letzte Zahl, die gespeichert wurde. + * + * @return letzte Zahl. + */ + public int getLastNumber() { + return lastNumber; + } + + /** + * Fügt eine neue Zahl hinzu. + * + * @param number die zu speichernde Zahl. + */ + public void add(int number) { + lastNumber = number; + numbers.add(number); + } + + /** + * Überprüft, ob die Zahlen fortlaufend sind. + * + * @throws IllegalArgumentException wenn die Zahlen nicht fortlaufend sind + */ + public void check() { + + int number = 0; + + for (Integer integer : numbers) { + number++; + if (integer != number) { + throw new IllegalStateException( + "Zahlen nicht fortlaufend!" + " erwartet: " + number + + " gefunden: " + integer); + } + } + } +} diff --git a/solutions/src/main/java/pr2/threads/stack_heap/ThreadProblem.java b/solutions/src/main/java/pr2/threads/stack_heap/ThreadProblem.java new file mode 100644 index 0000000..2548c09 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/stack_heap/ThreadProblem.java @@ -0,0 +1,32 @@ +package pr2.threads.stack_heap; + +public class ThreadProblem { + + private int i = 0; + + public static void main(String[] args) { + new ThreadProblem().go(); + } + + public void go() { + new Thread(new Incrementer()).start(); + new Thread(new Incrementer()).start(); + new Thread(new Incrementer()).start(); + } + + private class Incrementer implements Runnable { + + private int j = 0; + + @Override + public void run() { + int k = 0; + + i++; + j++; + k++; + + System.out.printf("i=%d, j=%d, k=%d%n", i, j, k); + } + } +} diff --git a/solutions/src/main/java/pr2/threads/synchronize/Synchronizer.java b/solutions/src/main/java/pr2/threads/synchronize/Synchronizer.java new file mode 100644 index 0000000..6507ba5 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/synchronize/Synchronizer.java @@ -0,0 +1,24 @@ +package pr2.threads.synchronize; + +public class Synchronizer { + + private int i = 0; + + public static void main(String[] args) { + + final Synchronizer s = new Synchronizer(); + + Runnable runner = () -> { + while (true) { + s.addAndPrint(); + } + }; + + new Thread(runner).start(); + new Thread(runner).start(); + } + + public synchronized void addAndPrint() { + System.out.println(i++); + } +} diff --git a/solutions/src/main/java/pr2/threads/timer/FakultaetTimer.java b/solutions/src/main/java/pr2/threads/timer/FakultaetTimer.java new file mode 100644 index 0000000..a67d5fd --- /dev/null +++ b/solutions/src/main/java/pr2/threads/timer/FakultaetTimer.java @@ -0,0 +1,39 @@ +/* (c) 2010 Thomas Smits */ +package pr2.threads.timer; + +import java.util.Timer; +import java.util.TimerTask; + +public class FakultaetTimer { + + private long fact(long n) { + return (n == 0 ? 1 : n * fact(n - 1)); + } + + public long[] calculate() { + + final long[] ergebnisse = new long[21]; + + class MyTask extends TimerTask { + + private final int pos; + + public MyTask(int pos) { + this.pos = pos; + } + + @Override + public void run() { + ergebnisse[pos] = fact(pos); + } + } + + Timer timer = new Timer(); + + for (int i = 0; i < ergebnisse.length; i++) { + timer.schedule(new MyTask(i), 0); + } + + return ergebnisse; + } +} diff --git a/solutions/src/main/java/pr2/threads/timer/Main.java b/solutions/src/main/java/pr2/threads/timer/Main.java new file mode 100644 index 0000000..0162793 --- /dev/null +++ b/solutions/src/main/java/pr2/threads/timer/Main.java @@ -0,0 +1,14 @@ +package pr2.threads.timer; + +public class Main { + + public static void main(String[] args) { + FakultaetTimer ft = new FakultaetTimer(); + long[] result = ft.calculate(); + + for (int i = 0; i < result.length; i++) { + long ergebnis = result[i]; + System.out.printf("fact(%d) = %d%n", i, ergebnis); + } + } +} diff --git a/solutions/src/main/java/pr2/vererbung/finals/A.java b/solutions/src/main/java/pr2/vererbung/finals/A.java index c698cd3..a2c7933 100644 --- a/solutions/src/main/java/pr2/vererbung/finals/A.java +++ b/solutions/src/main/java/pr2/vererbung/finals/A.java @@ -8,7 +8,7 @@ public class A { /** * Konstante für die Vorzeichenumkehr. */ - public static final int KONSTANTE = 100; + public static final int KONSTANTE = 100; /** * Addiert zwei Zahlen. Wenn das Ergebnis größer ist als @@ -19,8 +19,8 @@ public class A { * @param b zweiter Wert * @return Ergebnis */ - public final int add(final int a, final int b) { - final int result = a + b; + public final int add(final int a, final int b) { + final int result = a + b; if (result > KONSTANTE) { return result * -1; diff --git a/solutions/src/main/java/pr2/vererbung/finals/B.java b/solutions/src/main/java/pr2/vererbung/finals/B.java index 4abf03b..7e3fb1c 100644 --- a/solutions/src/main/java/pr2/vererbung/finals/B.java +++ b/solutions/src/main/java/pr2/vererbung/finals/B.java @@ -3,7 +3,7 @@ package pr2.vererbung.finals; /** * B-Klasse. */ -public final class B extends A { +public final class B extends A { /** * Subtrahiert zwei Zahlen. Wenn das Ergebnis kleiner ist als @@ -14,8 +14,8 @@ public final class B extends A { * @param b zweiter Wert * @return Ergebnis */ - public static int sub(final int a, final int b) { - final int result = a + b; + public static int sub(final int a, final int b) { + final int result = a + b; return (result < KONSTANTE) ? (result * -1) : (result); } diff --git a/solutions/src/main/java/pr2/vererbung/geometrie1/Rechteck.java b/solutions/src/main/java/pr2/vererbung/geometrie1/Rechteck.java index b86cbaf..3e5be9f 100644 --- a/solutions/src/main/java/pr2/vererbung/geometrie1/Rechteck.java +++ b/solutions/src/main/java/pr2/vererbung/geometrie1/Rechteck.java @@ -1,6 +1,6 @@ package pr2.vererbung.geometrie1; -public class Rechteck extends Figur { +public class Rechteck extends Figur { public Rechteck(int breite, int hoehe) { flaeche = breite * hoehe; diff --git a/solutions/src/main/java/pr2/vererbung/geometrie2/Figur.java b/solutions/src/main/java/pr2/vererbung/geometrie2/Figur.java index 20c57f3..cc8cf39 100644 --- a/solutions/src/main/java/pr2/vererbung/geometrie2/Figur.java +++ b/solutions/src/main/java/pr2/vererbung/geometrie2/Figur.java @@ -2,5 +2,5 @@ package pr2.vererbung.geometrie2; public class Figur { - private final int flaeche; + private final int flaeche; diff --git a/solutions/src/main/java/pr2/vererbung/geometrie3/Dreieck.java b/solutions/src/main/java/pr2/vererbung/geometrie3/Dreieck.java index 9a1a5bf..e878a60 100644 --- a/solutions/src/main/java/pr2/vererbung/geometrie3/Dreieck.java +++ b/solutions/src/main/java/pr2/vererbung/geometrie3/Dreieck.java @@ -1,6 +1,6 @@ package pr2.vererbung.geometrie3; -public class Dreieck extends Figur { +public class Dreieck extends Figur { public Dreieck(int grundseite, int hoehe) { super(grundseite * hoehe / 2); diff --git a/solutions/src/main/java/pr2/vererbung/geometrie3/Gerade.java b/solutions/src/main/java/pr2/vererbung/geometrie3/Gerade.java index 58f2461..11d1749 100644 --- a/solutions/src/main/java/pr2/vererbung/geometrie3/Gerade.java +++ b/solutions/src/main/java/pr2/vererbung/geometrie3/Gerade.java @@ -1,6 +1,6 @@ package pr2.vererbung.geometrie3; -public class Gerade extends Figur { +public class Gerade extends Figur { private final int laenge; diff --git a/solutions/src/main/java/pr2/vererbung/geometrie3/Quadrat.java b/solutions/src/main/java/pr2/vererbung/geometrie3/Quadrat.java index bc20fa0..1bd3232 100644 --- a/solutions/src/main/java/pr2/vererbung/geometrie3/Quadrat.java +++ b/solutions/src/main/java/pr2/vererbung/geometrie3/Quadrat.java @@ -1,6 +1,6 @@ package pr2.vererbung.geometrie3; -public class Quadrat extends Rechteck { +public class Quadrat extends Rechteck { public Quadrat(int seitenlaenge) { super(seitenlaenge, seitenlaenge); diff --git a/solutions/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java b/solutions/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java index 852640b..97b8477 100644 --- a/solutions/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java +++ b/solutions/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java @@ -3,7 +3,7 @@ package pr2.vererbung.konstruktoren; /** * Nachtelf aus der Allianz. */ -public class Nachtelf extends Wesen { +public class Nachtelf extends Wesen { /** * Standardmäßige Stärke der Fähigkeit Naturwiderstand. diff --git a/solutions/src/main/java/pr2/vererbung/konstruktoren/Untoter.java b/solutions/src/main/java/pr2/vererbung/konstruktoren/Untoter.java index 7505875..acd5d9f 100644 --- a/solutions/src/main/java/pr2/vererbung/konstruktoren/Untoter.java +++ b/solutions/src/main/java/pr2/vererbung/konstruktoren/Untoter.java @@ -3,7 +3,7 @@ package pr2.vererbung.konstruktoren; /** * Untoter aus der Horde. */ -public class Untoter extends Wesen { +public class Untoter extends Wesen { /** * Standardmäßige Stärke der Fähigkeit zur Unterwasseratmung. diff --git a/solutions/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java b/solutions/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java index f471b44..0436a18 100644 --- a/solutions/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java +++ b/solutions/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java @@ -1,6 +1,6 @@ package pr2.vererbung.singleton_einfach; -public final class Singleton { +public final class Singleton { private static final Singleton INSTANCE = new Singleton(); diff --git a/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java b/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java index 86dcc48..fe89d11 100644 --- a/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java +++ b/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java @@ -1,6 +1,6 @@ package pr2.vererbung.ueberschreiben_lebewesen; -public class Amoebe extends Lebewesen { +public class Amoebe extends Lebewesen { @Override public void bewegen() { diff --git a/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java b/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java index 89aeb8d..7056594 100644 --- a/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java +++ b/solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java @@ -1,6 +1,6 @@ package pr2.vererbung.ueberschreiben_lebewesen; -public class Dackel extends Lebewesen { +public class Dackel extends Lebewesen { @Override public void bewegen() { diff --git a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java index 70162b9..3e2c61c 100644 --- a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java +++ b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Ein Dreieck. */ -public class Dreieck extends Figur { +public class Dreieck extends Figur { /** * Erzeugt ein neues Dreieck mit den gegebenen Daten. diff --git a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java index 55dbcf3..a8af5fd 100644 --- a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java +++ b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Eine Gerade. */ -public class Gerade extends Figur { +public class Gerade extends Figur { /** * Länge der Geraden. diff --git a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java index e1dd8dc..af82bef 100644 --- a/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java +++ b/solutions/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Rechteck. */ -public class Rechteck extends Figur { +public class Rechteck extends Figur { /** * Legt ein neues Rechteck an. diff --git a/sources/src/main/java/pr2/collections/iterator/SimpleStack.java b/sources/src/main/java/pr2/collections/iterator/SimpleStack.java index 377de82..532ee48 100644 --- a/sources/src/main/java/pr2/collections/iterator/SimpleStack.java +++ b/sources/src/main/java/pr2/collections/iterator/SimpleStack.java @@ -7,7 +7,7 @@ import java.util.Iterator; * * @param Typ, der gespeichert werden soll. */ - public class SimpleStack { +public class SimpleStack { // TODO: implements Iterable hinzufügen // Variablen sind nicht private wegen Zugriff durch den Iterator diff --git a/sources/src/main/java/pr2/collections/map/WordFrequency.java b/sources/src/main/java/pr2/collections/map/WordFrequency.java index e66e6e7..963aaa2 100644 --- a/sources/src/main/java/pr2/collections/map/WordFrequency.java +++ b/sources/src/main/java/pr2/collections/map/WordFrequency.java @@ -3,7 +3,7 @@ package pr2.collections.map; /** * Klasse für die Verwaltung der Worthäufigkeiten. */ - public class WordFrequency { +public class WordFrequency { // TODO: Sortierbar machen [Comparable] /** diff --git a/sources/src/main/java/pr2/collections/reverser_generic/Reverser.java b/sources/src/main/java/pr2/collections/reverser_generic/Reverser.java index 735b95d..2a8d6ff 100644 --- a/sources/src/main/java/pr2/collections/reverser_generic/Reverser.java +++ b/sources/src/main/java/pr2/collections/reverser_generic/Reverser.java @@ -4,7 +4,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; - public class Reverser { +public class Reverser { public void reverse(List liste) { diff --git a/sources/src/main/java/pr2/enums/eigene/test/WuerfelTest.java b/sources/src/main/java/pr2/enums/eigene/test/WuerfelTest.java index 5760910..af7a80c 100644 --- a/sources/src/main/java/pr2/enums/eigene/test/WuerfelTest.java +++ b/sources/src/main/java/pr2/enums/eigene/test/WuerfelTest.java @@ -3,6 +3,7 @@ package pr2.enums.eigene.test; import org.junit.jupiter.api.Test; import pr2.enums.eigene.Wuerfel; + import static org.junit.jupiter.api.Assertions.assertEquals; /** diff --git a/sources/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java b/sources/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java index d806156..18e6f34 100644 --- a/sources/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java +++ b/sources/src/main/java/pr2/exceptions/eigene_ausnahme/FuseTrippedException.java @@ -3,7 +3,7 @@ package pr2.exceptions.eigene_ausnahme; /** * Ausnahme, wenn die Sicherung auslöst. */ - public class FuseTrippedException { +public class FuseTrippedException { // TODO: zu einer Ausnahme machen // TODO: Nennstrom und Auslösestrom speichern und in toString wieder ausgeben } diff --git a/sources/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java b/sources/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java index 6c9d99f..932e6d8 100644 --- a/sources/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java +++ b/sources/src/main/java/pr2/exceptions/eigene_ausnahme/IllegalCurrentException.java @@ -3,7 +3,7 @@ package pr2.exceptions.eigene_ausnahme; /** * Ausnahme, wenn eine Sicherung angelegt werden soll, die es nicht gibt. */ - public class IllegalCurrentException { +public class IllegalCurrentException { // TODO: zu einer Ausnahme machen // TODO: Nennstrom speichern, mit dem die Sicherung angelegt werden sollte. } diff --git a/sources/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java b/sources/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java index 76819fe..18b6d17 100644 --- a/sources/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java +++ b/sources/src/main/java/pr2/exceptions/fakultaet/FakultaetException.java @@ -1,5 +1,5 @@ package pr2.exceptions.fakultaet; - public class FakultaetException { +public class FakultaetException { } diff --git a/sources/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java b/sources/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java index a4745c3..3f1b5a9 100644 --- a/sources/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java +++ b/sources/src/main/java/pr2/exceptions/fakultaet/test/FakultaetTest.java @@ -6,6 +6,7 @@ import pr2.exceptions.fakultaet.FakultaetException; import static org.junit.jupiter.api.Assertions.assertEquals; + public class FakultaetTest { @Test diff --git a/sources/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java b/sources/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java index c4f5ed3..bbb219d 100644 --- a/sources/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java +++ b/sources/src/main/java/pr2/exceptions/handle_or_declare/Buchstabenzaehler.java @@ -79,6 +79,8 @@ public class Buchstabenzaehler { * @throws IOException generelles IO-Problem * @throws FileNotFoundException Datei gibt es nicht */ + + private int[] parseFile(String filename) { int[] statistik = new int['z' - 'a' + 1]; diff --git a/sources/src/main/java/pr2/generics/number_pair/NumberPair.java b/sources/src/main/java/pr2/generics/number_pair/NumberPair.java index aa17d75..4ef6850 100644 --- a/sources/src/main/java/pr2/generics/number_pair/NumberPair.java +++ b/sources/src/main/java/pr2/generics/number_pair/NumberPair.java @@ -1,5 +1,5 @@ package pr2.generics.number_pair; - public class NumberPair { +public class NumberPair { } diff --git a/sources/src/main/java/pr2/generics/pair/Pair.java b/sources/src/main/java/pr2/generics/pair/Pair.java index 6700e30..41746af 100644 --- a/sources/src/main/java/pr2/generics/pair/Pair.java +++ b/sources/src/main/java/pr2/generics/pair/Pair.java @@ -1,5 +1,5 @@ package pr2.generics.pair; - public class Pair { +public class Pair { } diff --git a/sources/src/main/java/pr2/generics/pairlist/PairList.java b/sources/src/main/java/pr2/generics/pairlist/PairList.java index e234665..f905854 100644 --- a/sources/src/main/java/pr2/generics/pairlist/PairList.java +++ b/sources/src/main/java/pr2/generics/pairlist/PairList.java @@ -1,5 +1,5 @@ package pr2.generics.pairlist; - public class PairList { +public class PairList { } diff --git a/sources/src/main/java/pr2/generics/queue/Queue.java b/sources/src/main/java/pr2/generics/queue/Queue.java index 3ebef1f..8c96750 100644 --- a/sources/src/main/java/pr2/generics/queue/Queue.java +++ b/sources/src/main/java/pr2/generics/queue/Queue.java @@ -1,6 +1,6 @@ package pr2.generics.queue; - public class Queue { +public class Queue { // TODO: Klasse gemäß der Aufgabenstellung implementieren } diff --git a/sources/src/main/java/pr2/generics/same_pair/SamePair.java b/sources/src/main/java/pr2/generics/same_pair/SamePair.java index 6b9a72e..44f47c8 100644 --- a/sources/src/main/java/pr2/generics/same_pair/SamePair.java +++ b/sources/src/main/java/pr2/generics/same_pair/SamePair.java @@ -1,5 +1,5 @@ package pr2.generics.same_pair; - public class SamePair { +public class SamePair { } diff --git a/sources/src/main/java/pr2/generics/wildcards/Main.java b/sources/src/main/java/pr2/generics/wildcards/Main.java index 448cb98..5d11f46 100644 --- a/sources/src/main/java/pr2/generics/wildcards/Main.java +++ b/sources/src/main/java/pr2/generics/wildcards/Main.java @@ -32,8 +32,8 @@ public final class Main { l2.add(4); l2.add(5); -// ListHelper.printList(l1); -// ListHelper.printList(l2); -// System.out.println(ListHelper.sumList(l2)); +// ListHelper.printList(l1); +// ListHelper.printList(l2); +// System.out.println(ListHelper.sumList(l2)); } } diff --git a/sources/src/main/java/pr2/interfaces/abstrakt_form/Form.java b/sources/src/main/java/pr2/interfaces/abstrakt_form/Form.java index a73eca5..aec8d11 100644 --- a/sources/src/main/java/pr2/interfaces/abstrakt_form/Form.java +++ b/sources/src/main/java/pr2/interfaces/abstrakt_form/Form.java @@ -1,5 +1,5 @@ package pr2.interfaces.abstrakt_form; - public class Form { +public class Form { } diff --git a/sources/src/main/java/pr2/interfaces/comparable_student/Student.java b/sources/src/main/java/pr2/interfaces/comparable_student/Student.java index b1816a3..b81bf36 100644 --- a/sources/src/main/java/pr2/interfaces/comparable_student/Student.java +++ b/sources/src/main/java/pr2/interfaces/comparable_student/Student.java @@ -1,6 +1,6 @@ package pr2.interfaces.comparable_student; - public class Student { +public class Student { private final String vorname; private final String nachname; diff --git a/sources/src/main/java/pr2/interfaces/stack/StackImpl.java b/sources/src/main/java/pr2/interfaces/stack/StackImpl.java index b49b742..0b16c37 100644 --- a/sources/src/main/java/pr2/interfaces/stack/StackImpl.java +++ b/sources/src/main/java/pr2/interfaces/stack/StackImpl.java @@ -1,5 +1,5 @@ package pr2.interfaces.stack; - public class StackImpl { +public class StackImpl { } diff --git a/sources/src/main/java/pr2/io/filter/UCaseReader.java b/sources/src/main/java/pr2/io/filter/UCaseReader.java index dee5bcf..7bd36fc 100644 --- a/sources/src/main/java/pr2/io/filter/UCaseReader.java +++ b/sources/src/main/java/pr2/io/filter/UCaseReader.java @@ -7,7 +7,7 @@ import java.io.Reader; /** * Filter-Reader, der den Inhalt in Großbuchstaben umwandelt. */ - public class UCaseReader { +public class UCaseReader { // TODO: FilterReader gemäß Aufgabenbeschreibung anlegen } diff --git a/sources/src/main/java/pr2/io/rot13/Rot13Reader.java b/sources/src/main/java/pr2/io/rot13/Rot13Reader.java index 2d5b388..2ec7a7b 100644 --- a/sources/src/main/java/pr2/io/rot13/Rot13Reader.java +++ b/sources/src/main/java/pr2/io/rot13/Rot13Reader.java @@ -4,7 +4,7 @@ import java.io.FilterReader; import java.io.IOException; import java.io.Reader; - public class Rot13Reader { +public class Rot13Reader { // TODO: Implementieren } diff --git a/sources/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java b/sources/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java index dff398e..91a9245 100644 --- a/sources/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java +++ b/sources/src/main/java/pr2/lambda/mogrifier_1/StringFunction.java @@ -1,4 +1,6 @@ package pr2.lambda.mogrifier_1; + public interface StringFunction { + } diff --git a/sources/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java b/sources/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java index d68c511..4602bed 100644 --- a/sources/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java +++ b/sources/src/main/java/pr2/lambda/mogrifier_2/StringFunction.java @@ -1,5 +1,6 @@ package pr2.lambda.mogrifier_2; + public interface StringFunction { String apply(String s); diff --git a/sources/src/main/java/pr2/object/clone_alien/Alien.java b/sources/src/main/java/pr2/object/clone_alien/Alien.java index 0223a3d..6a00b12 100644 --- a/sources/src/main/java/pr2/object/clone_alien/Alien.java +++ b/sources/src/main/java/pr2/object/clone_alien/Alien.java @@ -3,7 +3,7 @@ package pr2.object.clone_alien; /** * Ein Alien. */ - public class Alien { +public class Alien { /** * Name des Aliens. diff --git a/sources/src/main/java/pr2/object/clone_alien/Raumanzug.java b/sources/src/main/java/pr2/object/clone_alien/Raumanzug.java index 1658848..343073f 100644 --- a/sources/src/main/java/pr2/object/clone_alien/Raumanzug.java +++ b/sources/src/main/java/pr2/object/clone_alien/Raumanzug.java @@ -3,7 +3,7 @@ package pr2.object.clone_alien; /** * Ein Raumanzug. */ - public class Raumanzug { +public class Raumanzug { /** * Sauerstoffvorrat, der noch im Raumanzug ist. diff --git a/sources/src/main/java/pr2/object/clone_person/Person.java b/sources/src/main/java/pr2/object/clone_person/Person.java index 934ec8d..97e3a3b 100644 --- a/sources/src/main/java/pr2/object/clone_person/Person.java +++ b/sources/src/main/java/pr2/object/clone_person/Person.java @@ -2,7 +2,7 @@ package pr2.object.clone_person; import java.util.Date; - public class Person { +public class Person { private final String vorname = ""; private final String nachname = ""; diff --git a/sources/src/main/java/pr2/streams/summieren/SumUp.java b/sources/src/main/java/pr2/streams/summieren/SumUp.java index b6916ed..5a83b6e 100644 --- a/sources/src/main/java/pr2/streams/summieren/SumUp.java +++ b/sources/src/main/java/pr2/streams/summieren/SumUp.java @@ -5,6 +5,7 @@ import java.util.stream.Stream; public class SumUp { public static int sumUp(Stream numbers) { int result = 0; + return result; } } diff --git a/sources/src/main/java/pr2/threads/race_condition/NumberIncrementer.java b/sources/src/main/java/pr2/threads/race_condition/NumberIncrementer.java index ba6860c..7d993aa 100644 --- a/sources/src/main/java/pr2/threads/race_condition/NumberIncrementer.java +++ b/sources/src/main/java/pr2/threads/race_condition/NumberIncrementer.java @@ -32,9 +32,11 @@ public class NumberIncrementer implements Runnable { @Override public void run() { for (int i = 0; i < boundary; i++) { + int lastNum = numberList.getLastNumber(); lastNum++; numberList.add(lastNum); + } } } diff --git a/sources/src/main/java/pr2/vererbung/finals/B.java b/sources/src/main/java/pr2/vererbung/finals/B.java index 52dc4ac..b5c3d28 100644 --- a/sources/src/main/java/pr2/vererbung/finals/B.java +++ b/sources/src/main/java/pr2/vererbung/finals/B.java @@ -3,7 +3,7 @@ package pr2.vererbung.finals; /** * B-Klasse. */ - public class B extends A { +public class B extends A { /** * Subtrahiert zwei Zahlen. Wenn das Ergebnis kleiner ist als diff --git a/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java b/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java index 0415332..d0bee39 100644 --- a/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java +++ b/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java @@ -1,5 +1,5 @@ package pr2.vererbung.geometrie1; - public class Rechteck { +public class Rechteck { } diff --git a/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java b/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java index 6243d25..8130ac9 100644 --- a/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java +++ b/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java @@ -7,6 +7,9 @@ public class Figur { protected Figur() { /* nichts zu tun */ } + protected Figur(int flaeche) { + this.flaeche = flaeche; + } public int getFlaeche() { return flaeche; diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java b/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java index 7c0bbcf..c8a77c7 100644 --- a/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java @@ -1,5 +1,5 @@ package pr2.vererbung.geometrie3; - public class Dreieck { +public class Dreieck { } diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java b/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java index 67499d1..56cdf1e 100644 --- a/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java @@ -1,5 +1,5 @@ package pr2.vererbung.geometrie3; - public class Gerade { +public class Gerade { } diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java b/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java index 0bc45c2..1f47951 100644 --- a/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java @@ -1,5 +1,5 @@ package pr2.vererbung.geometrie3; - public class Quadrat { +public class Quadrat { } diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java b/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java index 2d651fd..7186710 100644 --- a/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java @@ -3,7 +3,7 @@ package pr2.vererbung.konstruktoren; /** * Nachtelf aus der Allianz. */ - public class Nachtelf { +public class Nachtelf { /** * Standardmäßige Stärke der Fähigkeit Naturwiderstand. diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java b/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java index 214f654..d95dc7e 100644 --- a/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java @@ -3,7 +3,7 @@ package pr2.vererbung.konstruktoren; /** * Untoter aus der Horde. */ - public class Untoter { +public class Untoter { /** * Standardmäßige Stärke der Fähigkeit zur Unterwasseratmung. diff --git a/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java b/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java index 313fcc7..28a2cd0 100644 --- a/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java +++ b/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java @@ -1,5 +1,5 @@ package pr2.vererbung.singleton_einfach; - public class Singleton { +public class Singleton { } diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java index 02ea122..761c032 100644 --- a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java @@ -1,5 +1,5 @@ package pr2.vererbung.ueberschreiben_lebewesen; - public class Amoebe { +public class Amoebe { } diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java index 1c5fd8a..a58d4e6 100644 --- a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java @@ -1,5 +1,5 @@ package pr2.vererbung.ueberschreiben_lebewesen; - public class Dackel { +public class Dackel { } diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java index b03f17b..a15c9aa 100644 --- a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Ein Dreieck. */ - public class Dreieck { +public class Dreieck { // TODO: Konstruktor } diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java index dfeb740..3707676 100644 --- a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Eine Gerade. */ - public class Gerade { +public class Gerade { /** * Länge der Geraden. diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java index 2221eb9..1b3129e 100644 --- a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java @@ -3,7 +3,7 @@ package pr2.vererbung.vererbung_geometrie; /** * Rechteck. */ - public class Rechteck { +public class Rechteck { // TODO: Konstruktor }