From caf3a356a2a27275688ee4e1d9a0a799a0d5db04 Mon Sep 17 00:00:00 2001 From: Carumar <1720808@stud.hs-mannheim.de> Date: Fri, 16 May 2025 13:46:44 +0200 Subject: [PATCH] feat: Add all files --- Time.java | 23 +++++++++++++ Time1.java | 31 ++++++++++++++++++ TimeTest.java | 34 ++++++++++++++++++++ Vector.java | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ VectorTest.java | 75 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 248 insertions(+) create mode 100644 Time.java create mode 100644 Time1.java create mode 100644 TimeTest.java create mode 100644 Vector.java create mode 100644 VectorTest.java diff --git a/Time.java b/Time.java new file mode 100644 index 0000000..da21fb5 --- /dev/null +++ b/Time.java @@ -0,0 +1,23 @@ + +public class Time { + public static boolean timeCheck(String time) { + + String regex = "^(?:[01]\\d|2[0-3]):[0-5]\\d$"; + boolean formatRichtig = false; + + if (time == null) { + formatRichtig = false; + } else if (time.length() != 5 || time.charAt(2) != ':') { + formatRichtig = false; + } else { + if (time.matches(regex)) { + formatRichtig = true; + } + } + return formatRichtig; + } + + public static void main(String[] args) { + System.out.println(timeCheck(null)); + } +} diff --git a/Time1.java b/Time1.java new file mode 100644 index 0000000..7e55679 --- /dev/null +++ b/Time1.java @@ -0,0 +1,31 @@ +import java.util.Scanner; + +public class Time1 { + public static boolean timeCheck(String[] args) { + String zeit = ""; + int stunden = 0; + int minuten = 0; + boolean formatRichtig = true; + String[] zeitTeile = new String[2]; + Scanner in = new Scanner(System.in); + System.out.println("Eingabe Zeit"); + zeit = in.next(); + + if (zeit.length() != 5 || zeit.charAt(3) != ':') { + formatRichtig = false; + } + else { + zeitTeile = zeit.split(":"); + stunden = Integer.parseInt(zeitTeile[0]); + minuten = Integer.parseInt(zeitTeile[1]); + if (stunden < 0 && stunden >= 24) { + formatRichtig = false; + } + else if (minuten < 0 && minuten >= 60) { + formatRichtig = false; + } + } + in.close(); + return formatRichtig; + } +} diff --git a/TimeTest.java b/TimeTest.java new file mode 100644 index 0000000..2682643 --- /dev/null +++ b/TimeTest.java @@ -0,0 +1,34 @@ +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + + +public class TimeTest { + + @Test + public void testValidTimes() { + assertTrue(Time.timeCheck("00:00")); + assertTrue(Time.timeCheck("09:15")); + assertTrue(Time.timeCheck("12:30")); + assertTrue(Time.timeCheck("23:59")); + assertTrue(Time.timeCheck("19:00")); + } + + @Test + public void testInvalidTimes() { + assertFalse(Time.timeCheck("24:00")); // Stunde zu groß + assertFalse(Time.timeCheck("12:60")); // Minute zu groß + assertFalse(Time.timeCheck("25:00")); // Stunde ungültig + assertFalse(Time.timeCheck("2:30")); // kein führendes 0 + assertFalse(Time.timeCheck("09:5")); // unvollständige Minuten + assertFalse(Time.timeCheck("09-15")); // falsches Trennzeichen + } + + @Test + public void testCompletelyInvalidStrings() { + assertFalse(Time.timeCheck("Hello World")); // Klar kein Zeitformat + assertFalse(Time.timeCheck("abc123")); // Zufallsstring + assertFalse(Time.timeCheck("time: 12:30")); // Präfix vor der Zeit + assertFalse(Time.timeCheck("")); // Leerer String + assertFalse(Time.timeCheck(null)); // Nullprüfung + } +} \ No newline at end of file diff --git a/Vector.java b/Vector.java new file mode 100644 index 0000000..a8087a7 --- /dev/null +++ b/Vector.java @@ -0,0 +1,85 @@ + +public class Vector { + + public static void scalarMultiplication(int[] vector, int scalar) { + for (int position = 0; position < vector.length; position++) { + + vector[position] *= scalar; + } + } + + public static void vectorProduct(int[] vector1, int[] vector2) { + + if (vector1.length == vector2.length && vector2.length == 3) { + int[] kreuzVektor3D = new int[3]; + kreuzVektor3D[0] = (vector1[1] * vector2[2]) - (vector1[2] * vector2[1]); + kreuzVektor3D[1] = (vector1[2] * vector2[0]) - (vector1[0] * vector2[2]); + kreuzVektor3D[2] = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]); + System.out.println("Ergebnis des Kreuzproduktes: [" + kreuzVektor3D[0] + ", " + kreuzVektor3D[1] + ", " + + kreuzVektor3D[2] + "]"); + + } + + else if (vector1.length == vector2.length && vector2.length == 2) { + int kreuzVektor2D = 0; + kreuzVektor2D = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]); + System.out.println("Ergebnis des Kreuzproduktes: " + kreuzVektor2D); + + } + + else { + System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt"); + } + + } + + public static double vectorLength(int[] vector) { + double qSumme = 0.0; + double betrag = 0.0; + for (int i = 0; i < vector.length; i++) { + qSumme = qSumme + (vector[i] * vector[i]); + + } + betrag = Math.sqrt(qSumme); + + return betrag; + + } + + public static int[][] matrixMultiplication(int[][] matrix, int scalar) { + int[][] ausgabe = null; + // boolean matrixFlag = false; + // if (matrix.length ==3 && matrix[0].length == 3 && matrix[1].length == 3 && + // matrix[2].length == 3){ + // matrixFlag =true; + // } + if (matrix.length == 3 && matrix[0].length == 3 && matrix[1].length == 3 && matrix[2].length == 3) { + ausgabe = new int[3][3]; + for (int außenPos = 0; außenPos < matrix.length; außenPos++) { + for (int innenPos = 0; innenPos < matrix[außenPos].length; innenPos++) { + ausgabe[außenPos][innenPos] = matrix[außenPos][innenPos] * scalar; + } + } + } + + return ausgabe; + } + + public static void main(String[] args) { + int[] vector = { 2, 4, 7 }; + int scalar = 3; + scalarMultiplication(vector, scalar); + System.out.println(vector[0] + " " + vector[1] + " " + vector[2]); + + int[] vector1 = { 2, 5, 1 }; + int[] vector2 = { 4, 7, 2 }; + + vectorProduct(vector1, vector2); + + int[] vector3 = { 2, 5 }; + int[] vector4 = { 4, 7 }; + + vectorProduct(vector3, vector4); + } + +} \ No newline at end of file diff --git a/VectorTest.java b/VectorTest.java new file mode 100644 index 0000000..d6279ae --- /dev/null +++ b/VectorTest.java @@ -0,0 +1,75 @@ +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class VectorTest { + + @Test + void testScalarMultiplication() { + int[] vector = {1, 2, 3}; + int scalar = 2; + Vector.scalarMultiplication(vector, scalar); + assertArrayEquals(new int[]{2, 4, 6}, vector); + int[] vector1 = {7, 8, 15}; + + Vector.scalarMultiplication(vector1, -1); + assertArrayEquals(new int[]{-7, -8, -15}, vector1); + } + + @Test + void testVectorProduct2D() { + int[] vector1 = {3, 4}; + int[] vector2 = {5, 6}; + // Für 2D Kreuzprodukt wird der Skalarwert (Z-Komponente des 3D-Kreuzprodukts) verwendet + // 3*6 - 4*5 = 18 - 20 = -2 + // Erwartete Ausgabe: -2 + System.out.print("Erwartete Ausgabe: -2\nTatsächliche Ausgabe: "); + Vector.vectorProduct(vector1, vector2); + } + + @Test + void testVectorProduct3D() { + int[] vector1 = {1, 2, 3}; + int[] vector2 = {4, 5, 6}; + // Kreuzprodukt: + // x = 2*6 - 3*5 = 12 - 15 = -3 + // y = 3*4 - 1*6 = 12 - 6 = 6 + // z = 1*5 - 2*4 = 5 - 8 = -3 + System.out.print("Erwartete Ausgabe: [-3, 6, -3]\nTatsächliche Ausgabe: "); + Vector.vectorProduct(vector1, vector2); + } + + @Test + void testVectorLength() { + int[] vector = {3, 4}; + double length = Vector.vectorLength(vector); + assertEquals(5.0, length, 0.001); + + int[] vector3D = {1, 2, 2}; + assertEquals(3.0, Vector.vectorLength(vector3D), 0.001); + } + + @Test + void testMatrixMultiplicationValidMatrix() { + int[][] matrix = { + {1, 2, 3}, + {4, 5, 6}, + {7, 8, 9} + }; + int scalar = 2; + int[][] expected = { + {2, 4, 6}, + {8, 10, 12}, + {14, 16, 18} + }; + assertArrayEquals(expected, Vector.matrixMultiplication(matrix, scalar)); + } + + @Test + void testMatrixMultiplicationInvalidMatrix() { + int[][] invalidMatrix = { + {1, 2}, + {3, 4} + }; + assertNull(Vector.matrixMultiplication(invalidMatrix, 3)); + } +} \ No newline at end of file