diff --git a/Prog A.iml b/Prog A.iml index 31b127f..8910f6d 100644 --- a/Prog A.iml +++ b/Prog A.iml @@ -4,6 +4,7 @@ + @@ -11,5 +12,6 @@ + \ No newline at end of file diff --git a/src/Praktikum3/TriangleChecker.java b/src/Praktikum3/TriangleChecker.java new file mode 100644 index 0000000..2238cd5 --- /dev/null +++ b/src/Praktikum3/TriangleChecker.java @@ -0,0 +1,74 @@ + +package Praktikum3; +import java.util.Scanner; + +public class TriangleChecker { + + public static void main(String[] args) { + Scanner s = new Scanner(System.in); + System.out.println("Geben Sie die Seitenlängen ein."); + float a = enterFloat(s, "a: "); + float b = enterFloat(s, "b: "); + float c = enterFloat(s, "c: "); + s.close(); + printAnalysis(a, b, c); + } + + // Eingabe einer Seitenlänge + private static float enterFloat(Scanner s, String prompt) { + System.out.print(prompt); + return s.nextFloat(); + } + + // Ausgabe der ermittelten Dreiecksart + private static void printAnalysis(float a, float b, float c) { + TriangleType type = checkTriangle(a, b, c); + switch (type) { + case NONE: + System.out.println("Kein Dreieck"); + break; + case NORMAL: + System.out.println("Dreieck"); + break; + case ISOSCELES: + System.out.println("Gleichschenkliges Dreieck"); + break; + case EQUILATERAL: + System.out.println("Gleichseitiges Dreieck"); + break; + } + } + +// Analyse der Dreiecksart + public static TriangleType checkTriangle(float a, float b, float c) { + + if (a <= 0 || b <= 0 || c <= 0) { + return TriangleType.NONE; + } + + if (a + b <= c || a + c <= b || b + c <= a) { + return TriangleType.NONE; + } + + if (a == b && b == c) { + return TriangleType.EQUILATERAL; + } + + if (a == b || b == c || a == c) { + return TriangleType.ISOSCELES; + } + return TriangleType.NORMAL; + } + + + + + + + + public enum TriangleType { + NONE, + NORMAL, + ISOSCELES, // Gleichschenklig + EQUILATERAL // Gleichseitig + }} \ No newline at end of file diff --git a/src/Praktikum3/ZahlenFilter.java b/src/Praktikum3/ZahlenFilter.java index b221e80..1e79c3f 100644 --- a/src/Praktikum3/ZahlenFilter.java +++ b/src/Praktikum3/ZahlenFilter.java @@ -3,34 +3,34 @@ package Praktikum3; public class ZahlenFilter { public void durchlaufenUndPruefen(int maxZahl) { for (int zahl = 1; zahl <= maxZahl; zahl++) { - pruefeDurch5Teilbar(zahl); - pruefeEndetAuf9(zahl); - pruefeDurch3TeilbarMitVorgaenger(zahl); + if (filter(zahl)){ + System.out.println(zahl + " erfüllt keins der Kriterien "); + } + } } +public static boolean filter(int zahl){ + return (!istDurch5Teilbar(zahl) && !endetAuf9(zahl) && !istDurch3TeilbarMitVorgaenger(zahl)); + + +} + public static boolean istDurch5Teilbar(int zahl) { + return zahl % 5 == 0; + } - private void pruefeDurch5Teilbar(int zahl) { - if (zahl % 5 == 0) { - System.out.println(zahl + " ist durch 5 teilbar!"); - } - } - //umwandeln zahlen zu string damit ich mit z.20 auf den letzten Ziffer zugreifen kann - private void pruefeEndetAuf9(int zahl) { + public static boolean endetAuf9(int zahl) { String zahlAlsString = Integer.toString(zahl); - char letzteZiffer = zahlAlsString.charAt(zahlAlsString.length()-1); - if(letzteZiffer == '9'){ - System.out.println(zahl + " endet auf 9!"); - } + char letzteZiffer = zahlAlsString.charAt(zahlAlsString.length() - 1); + return letzteZiffer == '9'; } - private void pruefeDurch3TeilbarMitVorgaenger(int zahl) { + public static boolean istDurch3TeilbarMitVorgaenger(int zahl) { if (zahl > 1) { int vorgaenger = zahl - 1; int summe = zahl + vorgaenger; - if (summe % 3 == 0) { - System.out.println(zahl + " und " + vorgaenger + " addiert ergeben " + summe + " und " + summe + " ist durch 3 teilbar"); - } + return summe % 3 == 0; } + return false; } public static void main(String[] args) { @@ -46,4 +46,4 @@ public class ZahlenFilter { ZahlenFilter pruefung = new ZahlenFilter(); pruefung.durchlaufenUndPruefen(maxZahl); } -} \ No newline at end of file +} diff --git a/test/Praktikum3/TriangleCheckerTest.java b/test/Praktikum3/TriangleCheckerTest.java new file mode 100644 index 0000000..fea385c --- /dev/null +++ b/test/Praktikum3/TriangleCheckerTest.java @@ -0,0 +1,13 @@ +package Praktikum3; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class TriangleCheckerTest { + + @Test + void checkTriangle() { + assertEquals(TriangleChecker.TriangleType.NORMAL, TriangleChecker.checkTriangle(3, 4, 5 )); + } +} \ No newline at end of file diff --git a/test/Praktikum3/ZahlenFilterTest.java b/test/Praktikum3/ZahlenFilterTest.java new file mode 100644 index 0000000..1d22166 --- /dev/null +++ b/test/Praktikum3/ZahlenFilterTest.java @@ -0,0 +1,33 @@ +package Praktikum3; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ZahlenFilterTest { + + @Test + void istDurch3TeilbarMitVorgaenger() { + assertTrue (ZahlenFilter.istDurch3TeilbarMitVorgaenger(5)); + assertFalse(ZahlenFilter.istDurch3TeilbarMitVorgaenger(3)); + } + + @Test + void filter() { + assertTrue (ZahlenFilter.filter(3)); + assertFalse(ZahlenFilter.filter(2)); + } + + @Test + void istDurch5Teilbar() { + assertTrue (ZahlenFilter.istDurch5Teilbar(10)); + assertFalse(ZahlenFilter.istDurch5Teilbar(21)); + } + + @Test + void endetAuf9() { + assertTrue (ZahlenFilter.endetAuf9(19)); + assertFalse(ZahlenFilter.endetAuf9(21)); + + } +} \ No newline at end of file