Andreas Wurst 2025-05-20 16:25:28 +02:00
parent f22a7f08cd
commit baf31141c8
3 changed files with 49 additions and 41 deletions

View File

@ -9,11 +9,10 @@ public class Time {
formatRichtig = false; formatRichtig = false;
} else if (time.length() != 5 || time.charAt(2) != ':') { } else if (time.length() != 5 || time.charAt(2) != ':') {
formatRichtig = false; formatRichtig = false;
} else { } else if (time.matches(regex)) {
if (time.matches(regex)) { formatRichtig = true;
formatRichtig = true;
}
} }
return formatRichtig; return formatRichtig;
} }

View File

@ -2,14 +2,18 @@
public class Vector { public class Vector {
public static void scalarMultiplication(int[] vector, int scalar) { public static void scalarMultiplication(int[] vector, int scalar) {
for (int position = 0; position < vector.length; position++) { if (vector != null) {
vector[position] *= scalar; for (int position = 0; position < vector.length; position++) {
vector[position] *= scalar;
}
} }
} }
public static void vectorProduct(int[] vector1, int[] vector2) { public static void vectorProduct(int[] vector1, int[] vector2) {
if (vector1.length == vector2.length && vector2.length == 3) { if (vector1 == null || vector2 == null) {
System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt");
} else if (vector1.length == vector2.length && vector2.length == 3) {
int[] kreuzVektor3D = new int[3]; int[] kreuzVektor3D = new int[3];
kreuzVektor3D[0] = (vector1[1] * vector2[2]) - (vector1[2] * vector2[1]); kreuzVektor3D[0] = (vector1[1] * vector2[2]) - (vector1[2] * vector2[1]);
kreuzVektor3D[1] = (vector1[2] * vector2[0]) - (vector1[0] * vector2[2]); kreuzVektor3D[1] = (vector1[2] * vector2[0]) - (vector1[0] * vector2[2]);
@ -32,10 +36,12 @@ public class Vector {
public static double vectorLength(int[] vector) { public static double vectorLength(int[] vector) {
double qSumme = 0.0; double qSumme = 0.0;
double betrag = 0.0; double betrag = 0.0;
for (int i = 0; i < vector.length; i++) { if (vector != null) {
qSumme = qSumme + (vector[i] * vector[i]); for (int i = 0; i < vector.length; i++) {
qSumme = qSumme + (vector[i] * vector[i]);
}
betrag = Math.sqrt(qSumme);
} }
betrag = Math.sqrt(qSumme);
return betrag; return betrag;
@ -43,20 +49,18 @@ public class Vector {
public static int[][] matrixMultiplication(int[][] matrix, int scalar) { public static int[][] matrixMultiplication(int[][] matrix, int scalar) {
int[][] ausgabe; int[][] ausgabe;
if (matrix == null){ if (matrix == null) {
ausgabe = null; ausgabe = null;
} } else if (matrix.length == 3 && matrix[0].length == 3 && matrix[1].length == 3 && matrix[2].length == 3) {
else if (matrix.length == 3 && matrix[0].length == 3 && matrix[1].length == 3 && matrix[2].length == 3) {
ausgabe = new int[3][3]; ausgabe = new int[3][3];
for (int außenPos = 0; außenPos < matrix.length; außenPos++) { for (int außenPos = 0; außenPos < matrix.length; außenPos++) {
for (int innenPos = 0; innenPos < matrix[außenPos].length; innenPos++) { for (int innenPos = 0; innenPos < matrix[außenPos].length; innenPos++) {
ausgabe[außenPos][innenPos] = matrix[außenPos][innenPos] * scalar; ausgabe[außenPos][innenPos] = matrix[außenPos][innenPos] * scalar;
} }
} }
} } else {
else {
ausgabe = null; ausgabe = null;
} }

View File

@ -7,23 +7,25 @@ public class VectorTest {
@Test @Test
void testScalarMultiplicationVariants() { void testScalarMultiplicationVariants() {
int[] v1 = { 1, -2, 3 }; int[] vector1 = { 1, -2, 3 };
Vector.scalarMultiplication(v1, 2); Vector.scalarMultiplication(vector1, 2);
assertArrayEquals(new int[] { 2, 4, 6 }, v1); assertArrayEquals(new int[] { 2, -4, 6 }, vector1);
int[] v2 = { 7, 8, 15 }; int[] vector2 = { 7, 8, 15 };
Vector.scalarMultiplication(v2, -1); Vector.scalarMultiplication(vector2, -1);
assertArrayEquals(new int[] { -7, -8, -15 }, v2); assertArrayEquals(new int[] { -7, -8, -15 }, vector2);
int[] v3 = { 0,0,0}; int[] vector3 = { 0, 0, 0 };
Vector.scalarMultiplication(v3, 5); Vector.scalarMultiplication(vector3, 5);
assertArrayEquals(new int[] { 0, 0, 0 }, v3); assertArrayEquals(new int[] { 0, 0, 0 }, vector3);
int[] v4 = {};
Vector.scalarMultiplication(v4, 2); int[] vector4 = {};
assertArrayEquals(new int[] { 0,0,0}, v4); Vector.scalarMultiplication(vector4, 2);
int[] v5 = null; assertArrayEquals(new int[] {}, vector4);
Vector.scalarMultiplication(v5, 5);
assertArrayEquals(null, v5); int[] vector5 = null;
Vector.scalarMultiplication(vector5, 5);
assertArrayEquals(null, vector5);
} }
@Test @Test
@ -31,6 +33,7 @@ public class VectorTest {
int ergebnis1 = -2; int ergebnis1 = -2;
System.out.println("Erwartet: " + ergebnis1); System.out.println("Erwartet: " + ergebnis1);
Vector.vectorProduct(new int[] { 3, 4 }, new int[] { 5, 6 }); Vector.vectorProduct(new int[] { 3, 4 }, new int[] { 5, 6 });
int ergebnis2 = -1; int ergebnis2 = -1;
System.out.println("Erwartet: " + ergebnis2); System.out.println("Erwartet: " + ergebnis2);
Vector.vectorProduct(new int[] { 0, 1 }, new int[] { 1, 0 }); Vector.vectorProduct(new int[] { 0, 1 }, new int[] { 1, 0 });
@ -42,6 +45,7 @@ public class VectorTest {
int[] ergebnis1 = { -3, 6, -3 }; int[] ergebnis1 = { -3, 6, -3 };
System.out.println("Erwartet: [" + ergebnis1[0] + ", " + ergebnis1[1] + ", " + ergebnis1[2] + "]"); System.out.println("Erwartet: [" + ergebnis1[0] + ", " + ergebnis1[1] + ", " + ergebnis1[2] + "]");
Vector.vectorProduct(new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 }); Vector.vectorProduct(new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 });
int[] ergebnis2 = { -1, 0, 0 }; int[] ergebnis2 = { -1, 0, 0 };
System.out.println("Erwartet: [" + ergebnis2[0] + ", " + ergebnis2[1] + ", " + ergebnis2[2] + "]"); System.out.println("Erwartet: [" + ergebnis2[0] + ", " + ergebnis2[1] + ", " + ergebnis2[2] + "]");
Vector.vectorProduct(new int[] { 0, 0, 1 }, new int[] { 0, 1, 0 }); Vector.vectorProduct(new int[] { 0, 0, 1 }, new int[] { 0, 1, 0 });
@ -91,20 +95,21 @@ public class VectorTest {
@Test @Test
void testMatrixMultiplicationInvalidCases() { void testMatrixMultiplicationInvalidCases() {
int[][] non3DSquare = { int[][] non3DSquare = {
{ 1, 2 }, { 1, 2, 3 },
{ 3, 4 } { 4, 5, 6 }
}; };
assertNull(Vector.matrixMultiplication(non3DSquare, 3)); assertNull(Vector.matrixMultiplication(non3DSquare, 3));
int[][] non3DSquare1 = { int[][] non3DSquare1 = {
{ 1, 2 }, { 1, 2, 3 },
{ 3, 4 ,5} { 3, 4, 5 },
{ 6, 7 }
}; };
assertNull(Vector.matrixMultiplication(non3DSquare1, 3)); assertNull(Vector.matrixMultiplication(non3DSquare1, 3));
int[][] non3DSquare2 = { int[][] non3DSquare2 = {
{ 1, 1, 1}, { 1, 1, 1 },
{ 2, 2, 2}, { 2, 2, 2 },
{ 3, 3, 3}, { 3, 3, 3 },
{ 4, 4, 4} { 4, 4, 4 }
}; };
assertNull(Vector.matrixMultiplication(non3DSquare2, 3)); assertNull(Vector.matrixMultiplication(non3DSquare2, 3));