@@ -4,8 +4,10 @@ | |||
<exclude-output /> | |||
<content url="file://$MODULE_DIR$"> | |||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> | |||
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" /> | |||
</content> | |||
<orderEntry type="inheritedJdk" /> | |||
<orderEntry type="sourceFolder" forTests="false" /> | |||
<orderEntry type="library" name="junit.jupiter" level="project" /> | |||
</component> | |||
</module> |
@@ -9,33 +9,41 @@ public class Zahlenfilter { | |||
public void filterZahlen(int start, int end) { | |||
for (int i = start; i <= end; i++) { | |||
if (istDurchFuenfTeilbar(i)) { | |||
if (checkDivisibleBy5(i)) { | |||
System.out.println(i + " ist durch 5 teilbar!"); | |||
} | |||
if (endetAufNeun(i)) { | |||
if (checkEndsWith9(i)) { | |||
System.out.println(i + " endet auf 9!"); | |||
} | |||
if (ergibtMitVorgaengerDurchDreiTeilbareSumme(i)) { | |||
if (checkSumDivisibleBy3(i, i - 1)) { | |||
int vorgaenger = i - 1; | |||
int summe = i + vorgaenger; | |||
System.out.println(i + " und " + vorgaenger + " addiert ergeben " + summe + " und " + summe + " ist durch 3 teilbar."); | |||
} | |||
if (filter(i, i - 1)) { | |||
System.out.println(i + " erfüllt keine der Filterkriterien."); | |||
} | |||
} | |||
} | |||
private boolean istDurchFuenfTeilbar(int zahl) { | |||
return zahl % 5 == 0; | |||
public static boolean checkDivisibleBy5(int number) { | |||
return number % 5 == 0; | |||
} | |||
public static boolean checkEndsWith9(int number) { | |||
return number % 10 == 9; | |||
} | |||
private boolean endetAufNeun(int zahl) { | |||
return zahl % 10 == 9; | |||
public static boolean checkSumDivisibleBy3(int number, int previousNumber) { | |||
return (number + previousNumber) % 3 == 0; | |||
} | |||
private boolean ergibtMitVorgaengerDurchDreiTeilbareSumme(int zahl) { | |||
int vorgaenger = zahl - 1; | |||
int summe = zahl + vorgaenger; | |||
return summe % 3 == 0; | |||
public static boolean filter(int number, int previousNumber) { | |||
return !checkDivisibleBy5(number) && | |||
!checkEndsWith9(number) && | |||
!checkSumDivisibleBy3(number, previousNumber); | |||
} | |||
} |
@@ -0,0 +1,72 @@ | |||
package praktikum02; | |||
import java.util.Scanner; | |||
public class TriangleChecker { | |||
public enum TriangleType { | |||
NONE, | |||
NORMAL, | |||
ISOSCELES, // Gleichschenklig | |||
EQUILATERAL // Gleichseitig | |||
} | |||
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) { | |||
// Überprüfen auf ungültige Seitenlängen | |||
if (a <= 0 || b <= 0 || c <= 0 || a + b <= c || a + c <= b || b + c <= a) { | |||
return TriangleType.NONE; | |||
} | |||
// Gleichseitiges Dreieck | |||
if (a == b && b == c) { | |||
return TriangleType.EQUILATERAL; | |||
} | |||
// Gleichschenkliges Dreieck | |||
if (a == b || b == c || a == c) { | |||
return TriangleType.ISOSCELES; | |||
} | |||
// Normales Dreieck | |||
return TriangleType.NORMAL; | |||
} | |||
} |
@@ -0,0 +1,53 @@ | |||
package praktikum02; | |||
import static org.junit.jupiter.api.Assertions.assertEquals; | |||
import org.junit.jupiter.api.Test; | |||
public class TriangleCheckerTest { | |||
@Test | |||
public void testNormalTriangle() { | |||
assertEquals(TriangleChecker.TriangleType.NORMAL, TriangleChecker.checkTriangle(3, 4, 5)); | |||
} | |||
@Test | |||
public void testEquilateralTriangle() { | |||
assertEquals(TriangleChecker.TriangleType.EQUILATERAL, TriangleChecker.checkTriangle(3, 3, 3)); | |||
} | |||
// Testfall: Eine Seite ist zu lang | |||
@Test | |||
public void testNoTriangle_OneSideTooLong() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(1, 2, 10)); | |||
} | |||
// Testfall: Eine andere Seite ist zu lang | |||
@Test | |||
public void testNoTriangle_SecondSideTooLong() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(10, 1, 2)); | |||
} | |||
// Testfall: Eine dritte Seite ist zu lang | |||
@Test | |||
public void testNoTriangle_ThirdSideTooLong() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(2, 10, 1)); | |||
} | |||
// Testfall: Eine Seite ist negativ | |||
@Test | |||
public void testNoTriangle_NegativeSide() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, 4, 5)); | |||
} | |||
// Testfall: Zwei Seiten sind negativ | |||
@Test | |||
public void testNoTriangle_TwoSidesNegative() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, -4, 5)); | |||
} | |||
// Testfall: Alle Seiten sind negativ | |||
@Test | |||
public void testNoTriangle_AllSidesNegative() { | |||
assertEquals(TriangleChecker.TriangleType.NONE, TriangleChecker.checkTriangle(-3, -4, -5)); | |||
} | |||
} |