Update of exercises
parent
57ecde7415
commit
d8ac950bc1
|
@ -1,6 +1,6 @@
|
||||||
# String in Großbuchstaben umwandeln
|
# String in Großbuchstaben umwandeln
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
* Daten von der Kommandozeile lesen.
|
* Daten von der Kommandozeile lesen.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Labeled Break
|
# Labeled Break
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Ein labeled break verwenden.
|
Ein labeled break verwenden.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Passwortbewertung
|
# Passwortbewertung
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Einfache String-Verarbeitung.
|
Einfache String-Verarbeitung.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# printf mit Formatstring
|
# printf mit Formatstring
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Formatierung mit Formatstrings.
|
Formatierung mit Formatstrings.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Maximum in einem Array suchen
|
# Maximum in einem Array suchen
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Über Arrays iterieren.
|
Über Arrays iterieren.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Taschenrechner
|
# Taschenrechner
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
`case` verwenden.
|
`case` verwenden.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Java-Coding-Standard anwenden
|
# Java-Coding-Standard anwenden
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.
|
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# JavaDoc schreiben
|
# JavaDoc schreiben
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
|
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Klasse mit JUnit testen
|
# Klasse mit JUnit testen
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Einen JUnit-Test für eine gegebene Klasse schreiben.
|
Einen JUnit-Test für eine gegebene Klasse schreiben.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Lösung: Klasse mit JUnit testen
|
# Lösung: Klasse mit JUnit testen
|
||||||
|
|
||||||
|
|
||||||
Gehen Sie in das Paket [pr2.intro.junit_faculty](../../solutions/src/main/java/pr2/intro/junit_faculty/).
|
Gehen Sie in das Paket [pr2.intro.junit_factorials](../../solutions/src/main/java/pr2/intro/junit_factorial/).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Information-Hiding einer Klasse verbessern
|
# Information-Hiding einer Klasse verbessern
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
|
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Vorhandene Bibliotheken als JAR einbinden
|
# Vorhandene Bibliotheken als JAR einbinden
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
[Musterlösung](solution/)
|
||||||
|
|
||||||
|
|
||||||
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
|
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.
|
||||||
|
|
222
readme.md
222
readme.md
|
@ -10,114 +10,114 @@ Hier finden Sie die **freiwilligen Übungen** zur Vorlesung Programmieren 2 (PR2
|
||||||
|
|
||||||
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
||||||
|
|
||||||
| # | Kapitel | Thema |
|
| # | Kapitel | Thema | Musterlösung |
|
||||||
|-----|-----------------------|---------------------------------------------------------------------------------------------------|
|
|-----|-----------------------|---------------------------------------------------------------------------------------------------|----------------|
|
||||||
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) |
|
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) | [✅](Auffrischung_001/solution/) |
|
||||||
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) |
|
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) | [✅](Auffrischung_002/solution/) |
|
||||||
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) |
|
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) | [✅](Auffrischung_003/solution/) |
|
||||||
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) |
|
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) | [✅](Auffrischung_004/solution/) |
|
||||||
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) |
|
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) | [✅](Auffrischung_005/solution/) |
|
||||||
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) |
|
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) | [✅](Auffrischung_006/solution/) |
|
||||||
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) |
|
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) | [✅](Einfuehrung_001/solution/) |
|
||||||
| 8. | Einführung | [JavaDoc schreiben](Einfuehrung_002/readme.md) |
|
| 8. | Einführung | [JavaDoc schreiben](Einfuehrung_002/readme.md) | [✅](Einfuehrung_002/solution/) |
|
||||||
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) |
|
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) | [✅](Einfuehrung_003/solution/) |
|
||||||
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) |
|
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) | [✅](Strukturierung_001/solution/) |
|
||||||
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) |
|
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) | [✅](Strukturierung_002/solution/) |
|
||||||
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) |
|
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) | |
|
||||||
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) |
|
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) | |
|
||||||
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) |
|
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) | |
|
||||||
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) |
|
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) | |
|
||||||
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) |
|
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) | |
|
||||||
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) |
|
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) | |
|
||||||
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) |
|
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) | |
|
||||||
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) |
|
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) | |
|
||||||
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) |
|
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) | |
|
||||||
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) |
|
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) | |
|
||||||
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) |
|
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) | |
|
||||||
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) |
|
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) | |
|
||||||
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) |
|
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) | |
|
||||||
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) |
|
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) | |
|
||||||
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) |
|
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) | |
|
||||||
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) |
|
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) | |
|
||||||
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) |
|
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) | |
|
||||||
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) |
|
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) | |
|
||||||
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) |
|
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) | |
|
||||||
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) |
|
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) | |
|
||||||
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) |
|
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) | |
|
||||||
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) |
|
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) | |
|
||||||
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) |
|
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) | |
|
||||||
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) |
|
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) | |
|
||||||
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) |
|
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) | |
|
||||||
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) |
|
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) | |
|
||||||
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) |
|
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) | |
|
||||||
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) |
|
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) | |
|
||||||
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) |
|
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) | |
|
||||||
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) |
|
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) | |
|
||||||
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) |
|
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) | |
|
||||||
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) |
|
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) | |
|
||||||
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) |
|
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) | |
|
||||||
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) |
|
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) | |
|
||||||
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) |
|
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) | |
|
||||||
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) |
|
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) | |
|
||||||
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) |
|
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) | |
|
||||||
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) |
|
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) | |
|
||||||
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) |
|
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) | |
|
||||||
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) |
|
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) | |
|
||||||
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) |
|
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) | |
|
||||||
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) |
|
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) | |
|
||||||
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) |
|
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) | |
|
||||||
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) |
|
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) | |
|
||||||
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) |
|
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) | |
|
||||||
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) |
|
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) | |
|
||||||
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) |
|
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) | |
|
||||||
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) |
|
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) | |
|
||||||
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) |
|
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) | |
|
||||||
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) |
|
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) | |
|
||||||
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) |
|
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) | |
|
||||||
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) |
|
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) | |
|
||||||
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) |
|
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) | |
|
||||||
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) |
|
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) | |
|
||||||
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) |
|
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) | |
|
||||||
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) |
|
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) | |
|
||||||
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) |
|
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) | |
|
||||||
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) |
|
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) | |
|
||||||
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) |
|
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) | |
|
||||||
| 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) |
|
| 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) | |
|
||||||
| 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) |
|
| 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) | |
|
||||||
| 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) |
|
| 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) | |
|
||||||
| 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) |
|
| 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) | |
|
||||||
| 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) |
|
| 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) | |
|
||||||
| 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) |
|
| 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) | |
|
||||||
| 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) |
|
| 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) | |
|
||||||
| 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) |
|
| 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) | |
|
||||||
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) |
|
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | |
|
||||||
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) |
|
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | |
|
||||||
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) |
|
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) | |
|
||||||
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) |
|
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) | |
|
||||||
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) |
|
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | |
|
||||||
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) |
|
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | |
|
||||||
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) |
|
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) | |
|
||||||
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) |
|
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | |
|
||||||
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) |
|
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | |
|
||||||
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) |
|
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) | |
|
||||||
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) |
|
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | |
|
||||||
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) |
|
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | |
|
||||||
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) |
|
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | |
|
||||||
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) |
|
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | |
|
||||||
| 93. | Streams | [Liste filtern](Streams_004/readme.md) |
|
| 93. | Streams | [Liste filtern](Streams_004/readme.md) | |
|
||||||
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) |
|
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | |
|
||||||
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) |
|
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | |
|
||||||
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) |
|
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | |
|
||||||
| 97. | Streams | [Reduce](Streams_008/readme.md) |
|
| 97. | Streams | [Reduce](Streams_008/readme.md) | |
|
||||||
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) |
|
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | |
|
||||||
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) |
|
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | |
|
||||||
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) |
|
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | |
|
||||||
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) |
|
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | |
|
||||||
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) |
|
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | |
|
||||||
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) |
|
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | |
|
||||||
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) |
|
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | |
|
||||||
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) |
|
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | |
|
||||||
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) |
|
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | |
|
||||||
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) |
|
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | |
|
||||||
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) |
|
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | |
|
||||||
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) |
|
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | |
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package pr2.auffrischung.grossmacher;
|
||||||
|
|
||||||
|
public class Grossmacher {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
if (args.length < 1) {
|
||||||
|
System.err.println("Kein Argument angeben!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String ergebnis = args[0].toUpperCase();
|
||||||
|
|
||||||
|
System.out.printf("Ergebnis: %s%n", ergebnis);
|
||||||
|
System.out.printf("Zeichen : %d%n", ergebnis.length());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package pr2.auffrischung.labeled_break;
|
||||||
|
|
||||||
|
public class ArraySucher {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sucht das erste Element, dass nicht 0 ist.
|
||||||
|
*
|
||||||
|
* @param array das Array in dem gesucht werden soll
|
||||||
|
* @return {@code true}, wenn ein Element gefunden wird,
|
||||||
|
* andernfalls {@code false}.
|
||||||
|
*/
|
||||||
|
public boolean suche(int[][] array) {
|
||||||
|
boolean found = false;
|
||||||
|
|
||||||
|
outer:
|
||||||
|
for (int[] is : array) {
|
||||||
|
for (int i : is) {
|
||||||
|
if (i != 0) {
|
||||||
|
found = true;
|
||||||
|
break outer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package pr2.auffrischung.password;
|
||||||
|
|
||||||
|
public class PasswortChecker {
|
||||||
|
|
||||||
|
private static final char[] NUMBERS = "1234567890".toCharArray();
|
||||||
|
private static final char[] LOWERCASE
|
||||||
|
= "abcdefghijklmnopqrstuvwxyz".toCharArray();
|
||||||
|
private static final char[] UPPERCASE
|
||||||
|
= "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
|
||||||
|
private static final char[] SPECIAL_CHARS = "!%()\"".toCharArray();
|
||||||
|
|
||||||
|
private static boolean contains(String string, char[] chars) {
|
||||||
|
for (char c : chars) {
|
||||||
|
if (string.indexOf(c) >= 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int checkPassword(String password) {
|
||||||
|
int points = 0;
|
||||||
|
|
||||||
|
if (password.length() >= 8) {
|
||||||
|
points++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (contains(password, NUMBERS)
|
||||||
|
&& (contains(password, LOWERCASE)
|
||||||
|
|| contains(password, UPPERCASE))) {
|
||||||
|
points++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (contains(password, SPECIAL_CHARS)) {
|
||||||
|
points++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (contains(password, LOWERCASE) && contains(password, UPPERCASE)) {
|
||||||
|
points++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return points;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println(checkPassword("mutti"));
|
||||||
|
System.out.println(checkPassword("Mutti"));
|
||||||
|
System.out.println(checkPassword("mutti123"));
|
||||||
|
System.out.println(checkPassword("Mutti123"));
|
||||||
|
System.out.println(checkPassword("Mutti123!%"));
|
||||||
|
System.out.println(checkPassword("1234"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package pr2.auffrischung.printf;
|
||||||
|
|
||||||
|
public class DoubleFormatter {
|
||||||
|
|
||||||
|
public static void printDouble(double d) {
|
||||||
|
System.out.printf("%.3f%n", d);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
printDouble(1.0);
|
||||||
|
printDouble(10.1);
|
||||||
|
printDouble(2.01);
|
||||||
|
printDouble(2.001);
|
||||||
|
printDouble(2.0001);
|
||||||
|
printDouble(2.0004);
|
||||||
|
printDouble(2.0005);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package pr2.auffrischung.suchemax;
|
||||||
|
|
||||||
|
public class GroessteZahl {
|
||||||
|
|
||||||
|
public int sucheMax(int[] zahlen) {
|
||||||
|
int max = Integer.MIN_VALUE;
|
||||||
|
|
||||||
|
for (int zahl : zahlen) {
|
||||||
|
max = Math.max(max, zahl);
|
||||||
|
}
|
||||||
|
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
GroessteZahl g = new GroessteZahl();
|
||||||
|
System.out.println(g.sucheMax(new int[] {1, 5, 8, 2, 0}));
|
||||||
|
System.out.println(g.sucheMax(new int[] {-1, -5, -8, -2, -20}));
|
||||||
|
System.out.println(g.sucheMax(new int[] {10000, -10000, 1, 2, 33}));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package pr2.auffrischung.taschenrechner;
|
||||||
|
|
||||||
|
public class Taschenrechner {
|
||||||
|
|
||||||
|
public double rechne(double o1, char op, double o2) {
|
||||||
|
return switch (op) {
|
||||||
|
case '+' -> o1 + o2;
|
||||||
|
case '-' -> o1 - o2;
|
||||||
|
case '*' -> o1 * o2;
|
||||||
|
case '/' -> o1 / o2;
|
||||||
|
case '^' -> Math.pow(o1, o2);
|
||||||
|
default -> Double.NaN;
|
||||||
|
};
|
||||||
|
// return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Taschenrechner t = new Taschenrechner();
|
||||||
|
System.out.println(t.rechne(1, '+', 2));
|
||||||
|
System.out.println(t.rechne(1, '-', 2));
|
||||||
|
System.out.println(t.rechne(2, '*', 2));
|
||||||
|
System.out.println(t.rechne(4, '/', 2));
|
||||||
|
System.out.println(t.rechne(2, '^', 32));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
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 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstante, die dem Rest der Welt etwas mitteilen soll.
|
||||||
|
*/
|
||||||
|
public static final int KONSTANTE_MIT_TOLLEM_WERT = 3;
|
||||||
|
|
||||||
|
private int erstesFeld;
|
||||||
|
|
||||||
|
private double zweitesFeld;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt eine neue Instanz an.
|
||||||
|
*
|
||||||
|
* @param erstesFeld das erste Feld.
|
||||||
|
* @param zweitesFeld das zweite Feld.
|
||||||
|
*/
|
||||||
|
public CodingStandard(int erstesFeld, double zweitesFeld) {
|
||||||
|
this.erstesFeld = erstesFeld;
|
||||||
|
this.zweitesFeld = zweitesFeld;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode, die etwas tut.
|
||||||
|
*
|
||||||
|
* @param parameter Eingabewert für die Methode.
|
||||||
|
* @return gibt einen Wert abhängig von {@code parameter} zurück.
|
||||||
|
*/
|
||||||
|
public int methodeDieWasTut(int parameter) {
|
||||||
|
|
||||||
|
int result;
|
||||||
|
|
||||||
|
if (parameter > KONSTANTE_MIT_TOLLEM_WERT) {
|
||||||
|
result = 12;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
erstesFeld = result;
|
||||||
|
zweitesFeld = 2 * result;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,140 @@
|
||||||
|
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
|
||||||
|
* Umrechnungskurs zum US-Dollar aus.
|
||||||
|
* <p>
|
||||||
|
* Objekte dieser Klasse sind imutable, d.h. sie können nach der Erzeugung
|
||||||
|
* nicht mehr verändert werden.
|
||||||
|
*/
|
||||||
|
public class Waehrung {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Teiler für die Nachkommastellen.
|
||||||
|
*/
|
||||||
|
private static final long TEILER = 10000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Umrechnungskurs zum Dollar.
|
||||||
|
*/
|
||||||
|
private final int kurs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Langer Name der Währung.
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abkürzung zur Währung.
|
||||||
|
*/
|
||||||
|
private final String kuerzel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erzeugt ein neues Objekt.
|
||||||
|
*
|
||||||
|
* @param name Name der Währung (z.B. EURO).
|
||||||
|
* @param kuerzel Kürzel der Währung (z.B. €).
|
||||||
|
* @param kurs Wechselkurs zum Dollar.
|
||||||
|
*/
|
||||||
|
public Waehrung(String name, String kuerzel, double kurs) {
|
||||||
|
this.kurs = (int) (kurs * TEILER);
|
||||||
|
this.name = name;
|
||||||
|
this.kuerzel = kuerzel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rechnet einen Berag in der aktuellen Währung in eine andere Währung
|
||||||
|
* um.
|
||||||
|
*
|
||||||
|
* @param betrag Betrag der umgerechnet werden soll.
|
||||||
|
* @param toWaehrung die Zielwährung.
|
||||||
|
* @return Ergebnis der Umrechnung.
|
||||||
|
*/
|
||||||
|
public long umrechnen(long betrag, Waehrung toWaehrung) {
|
||||||
|
return betrag * kurs / toWaehrung.kurs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt den Kurs der aktuellen Währung zurück.
|
||||||
|
*
|
||||||
|
* @return Wechselkurs bezogen auf den US-Dollar.
|
||||||
|
*/
|
||||||
|
public int getKurs() {
|
||||||
|
return kurs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt den Namen der Währung zurück.
|
||||||
|
*
|
||||||
|
* @return Name der Währung (z.B. Euro oder Dollar).
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt das Kürzel für die Währung zurück.
|
||||||
|
*
|
||||||
|
* @return Das Kürzel der Währung (z.B. EUR oder $)
|
||||||
|
*/
|
||||||
|
public String getKuerzel() {
|
||||||
|
return kuerzel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("%s [%s] 1 %s = %.4f %s", name, kuerzel, "$",
|
||||||
|
kurs / (double) TEILER, kuerzel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see java.lang.Object#hashCode()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||||
|
result = prime * result + kurs;
|
||||||
|
result = prime * result + ((kuerzel == null) ? 0 : kuerzel.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see java.lang.Object#equals(java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Waehrung other = (Waehrung) obj;
|
||||||
|
if (name == null) {
|
||||||
|
if (other.name != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!name.equals(other.name)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (kurs != other.kurs) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (kuerzel == null) {
|
||||||
|
return other.kuerzel == null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return kuerzel.equals(other.kuerzel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package pr2.strukturierung.information_hiding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein einfacher Taschenrechner.
|
||||||
|
*/
|
||||||
|
public class Rechner {
|
||||||
|
|
||||||
|
/** Speicher des Taschenrechners. */
|
||||||
|
private double speicher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Addiert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public double addiere(double a, double b) {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtrahiert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public double subtrahiere(double a, double b) {
|
||||||
|
return a - b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multipliziert zwei Werte und gibt das Ergebnis zurück.
|
||||||
|
*
|
||||||
|
* @param a erster Operand.
|
||||||
|
* @param b zweiter Operand.
|
||||||
|
* @return das Ergebnis.
|
||||||
|
*/
|
||||||
|
public double multipliziere(double a, double b) {
|
||||||
|
return a * b;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Gibt den gespeicherten Wert zurück.
|
||||||
|
*
|
||||||
|
* @return gespeicherter Wert.
|
||||||
|
*/
|
||||||
|
public double getSpeicher() {
|
||||||
|
return speicher;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Speichert den gegebenen Wert.
|
||||||
|
*
|
||||||
|
* @param wert Wert, der gespeichert werden soll.
|
||||||
|
*/
|
||||||
|
public void setSpeicher(double wert) {
|
||||||
|
speicher = wert;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package pr2.auffrischung.grossmacher;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class GrossmacherTest {
|
||||||
|
|
||||||
|
private static PrintStream out;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void setup() {
|
||||||
|
out = System.out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void tearDown() {
|
||||||
|
System.setOut(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@ValueSource(strings = { "alles klein", "ALLES GROSS", "gemIschT" })
|
||||||
|
void testMain(String text) throws IOException {
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
PrintStream ps = new PrintStream(bos);
|
||||||
|
System.setOut(ps);
|
||||||
|
|
||||||
|
Grossmacher.main(new String[] { text });
|
||||||
|
String result = String.format("Ergebnis: %s\nZeichen : %d",
|
||||||
|
text.toUpperCase(),
|
||||||
|
text.length());
|
||||||
|
|
||||||
|
assertEquals(result, bos.toString().trim());
|
||||||
|
bos.close();
|
||||||
|
// Don't close ps!
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package pr2.auffrischung.labeled_break;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
|
||||||
|
public class ArraySucherTest {
|
||||||
|
|
||||||
|
final int[][] EMPTY = {{}};
|
||||||
|
final int[][] ZERO = { { 0, 0, 0 }, { 0, 0, 0 }};
|
||||||
|
final int[][] END = { { 0, 0, 0 }, { 0, 0, 1 }};
|
||||||
|
final int[][] BEGINNING = { { 1, 0, 0 }, { 0, 0, 0 }};
|
||||||
|
final int[][] ONE = { { 1, 1, 1 }, { 1, 1, 1 }};
|
||||||
|
final int[][] TRIANGLE = { { 0, 0 }, { 0, 0 }, { 0, 0, 0 }, { 0, 0, 0, 1 } };
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSuche() {
|
||||||
|
var as = new ArraySucher();
|
||||||
|
assertFalse(as.suche(EMPTY));
|
||||||
|
assertFalse(as.suche(ZERO));
|
||||||
|
assertTrue(as.suche(END));
|
||||||
|
assertTrue(as.suche(BEGINNING));
|
||||||
|
assertTrue(as.suche(ONE));
|
||||||
|
assertTrue(as.suche(TRIANGLE));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package pr2.auffrischung.password;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static pr2.auffrischung.password.PasswortChecker.checkPassword;
|
||||||
|
|
||||||
|
public class PasswortCheckerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testPasswordChecker() {
|
||||||
|
assertEquals(0, checkPassword("mutti"));
|
||||||
|
assertEquals(0, checkPassword("1234"));
|
||||||
|
assertEquals(1, checkPassword("Mutti"));
|
||||||
|
assertEquals(2, checkPassword("mutti123"));
|
||||||
|
assertEquals(3, checkPassword("Mutti123"));
|
||||||
|
assertEquals(4, checkPassword("Mutti123!%"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package pr2.auffrischung.printf;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static pr2.auffrischung.printf.DoubleFormatter.printDouble;
|
||||||
|
|
||||||
|
public class DoubleFormatterTest {
|
||||||
|
|
||||||
|
private static PrintStream out;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void setup() {
|
||||||
|
out = System.out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void tearDown() {
|
||||||
|
System.setOut(out);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testPrintf() throws IOException {
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
PrintStream out = System.out;
|
||||||
|
PrintStream ps = new PrintStream(bos);
|
||||||
|
System.setOut(ps);
|
||||||
|
|
||||||
|
printDouble(1.0);
|
||||||
|
assertEquals("1.000", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(10.1);
|
||||||
|
assertEquals("10.100", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(2.01);
|
||||||
|
assertEquals("2.010", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(2.001);
|
||||||
|
assertEquals("2.001", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(2.0001);
|
||||||
|
assertEquals("2.000", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(2.0004);
|
||||||
|
assertEquals("2.000", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
printDouble(2.0005);
|
||||||
|
assertEquals("2.001", bos.toString().trim());
|
||||||
|
bos.reset();
|
||||||
|
|
||||||
|
bos.close();
|
||||||
|
// Don't close ps!
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package pr2.auffrischung.suchemax;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class GroessteZahlTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSucheMax() {
|
||||||
|
GroessteZahl g = new GroessteZahl();
|
||||||
|
assertEquals(8, g.sucheMax(
|
||||||
|
new int[] {1, 5, 8, 2, 0}));
|
||||||
|
assertEquals(-1, g.sucheMax(
|
||||||
|
new int[] {-1, -5, -8, -2, -20}));
|
||||||
|
assertEquals(10000, g.sucheMax(
|
||||||
|
new int[] {10000, -10000, 1, 2, 33}));
|
||||||
|
assertEquals(9, g.sucheMax(
|
||||||
|
new int[] {9}));
|
||||||
|
assertEquals(0, g.sucheMax(
|
||||||
|
new int[] {0, 0, 0, 0, 0, 0, 0}));
|
||||||
|
assertEquals(Integer.MAX_VALUE, g.sucheMax(
|
||||||
|
new int[] {Integer.MIN_VALUE, Integer.MAX_VALUE}));
|
||||||
|
assertEquals(Integer.MIN_VALUE, g.sucheMax(
|
||||||
|
new int[] {Integer.MIN_VALUE, Integer.MIN_VALUE}));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package pr2.auffrischung.taschenrechner;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||||
|
|
||||||
|
public class TaschenrechnerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testRechne() {
|
||||||
|
Taschenrechner t = new Taschenrechner();
|
||||||
|
assertEquals(0.0, t.rechne(0.0, '+', 0.0));
|
||||||
|
assertEquals(0.0, t.rechne(0.0, '-', 0.0));
|
||||||
|
assertEquals(0.0, t.rechne(0.0, '*', 0.0));
|
||||||
|
assertEquals(0.0, t.rechne(0.0, '/', 1.0));
|
||||||
|
assertEquals(0.0, t.rechne(0.0, '^', 1.0));
|
||||||
|
|
||||||
|
assertEquals(2.0, t.rechne(1.0, '+', 1.0));
|
||||||
|
assertEquals(0.0, t.rechne(1.0, '-', 1.0));
|
||||||
|
assertEquals(1.0, t.rechne(1.0, '*', 1.0));
|
||||||
|
assertEquals(1.0, t.rechne(1.0, '/', 1.0));
|
||||||
|
assertEquals(1.0, t.rechne(1.0, '^', 1.0));
|
||||||
|
|
||||||
|
assertEquals(4.4, t.rechne(2.2, '+', 2.2));
|
||||||
|
assertEquals(2.2, t.rechne(4.4, '-', 2.2));
|
||||||
|
assertEquals(4.4, t.rechne(2.2, '*', 2.0));
|
||||||
|
assertEquals(2.0, t.rechne(2.2, '/', 1.1));
|
||||||
|
assertEquals(4.0, t.rechne(2.0, '^', 2.0));
|
||||||
|
|
||||||
|
assertEquals(Double.NaN, t.rechne(1.0, '~', 1.0));
|
||||||
|
|
||||||
|
assertNotEquals(0.0, t.rechne(1.0, '~', 1.0) );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package pr2.strukturierung.information_hiding.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.strukturierung.information_hiding.Rechner;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit-Test für den Rechner.
|
||||||
|
*/
|
||||||
|
public class RechnerTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testet alle Grundoperationen des Rechners.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testRechner() {
|
||||||
|
Rechner r = new Rechner();
|
||||||
|
|
||||||
|
// 2 + 2 = 4
|
||||||
|
assertEquals(4.0, r.addiere(2.0, 2.0), 0.0001);
|
||||||
|
|
||||||
|
// 3 - 1 = 2
|
||||||
|
assertEquals(2.0, r.subtrahiere(3, 1), 0.0001);
|
||||||
|
|
||||||
|
// 3 * 3 = 9
|
||||||
|
assertEquals(9.0, r.multipliziere(3, 3), 0.0001);
|
||||||
|
|
||||||
|
// 2 + 2 * 2 = 6
|
||||||
|
r.setSpeicher(r.multipliziere(2, 2));
|
||||||
|
assertEquals(6.0, r.addiere(2, r.getSpeicher()), 0.0001);
|
||||||
|
// // 2 + 2 = 4
|
||||||
|
// r.addiere(2.0, 2.0);
|
||||||
|
// assertEquals(4.0, r.wert, 0.0001);
|
||||||
|
//
|
||||||
|
// // 3 - 1 = 2
|
||||||
|
// r.subtrahiere(3, 1);
|
||||||
|
// assertEquals(2.0, r.wert, 0.0001);
|
||||||
|
//
|
||||||
|
// // 3 * 3 = 9
|
||||||
|
// r.multipliziere(3, 3);
|
||||||
|
// assertEquals(9.0, r.wert, 0.0001);
|
||||||
|
//
|
||||||
|
// // 2 + 2 * 2 = 6
|
||||||
|
// r.multipliziere(2, 2);
|
||||||
|
// r.speichern();
|
||||||
|
// r.addiere(2, r.speicher);
|
||||||
|
// assertEquals(6.0, r.wert, 0.0001);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue