From e540c1b4667245ae0a66fd22ba07ea0280d5819f Mon Sep 17 00:00:00 2001 From: JMullin-06 Date: Thu, 29 Oct 2026 15:45:09 -0400 Subject: [PATCH 1/3] Added surface area calculation for triangular prism, and fixed IllegalArgumentException for surface area calculation for pyramid --- .../java/com/thealgorithms/maths/Area.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Area.java b/src/main/java/com/thealgorithms/maths/Area.java index 84fc67159379..0a8fe6fdd3ec 100644 --- a/src/main/java/com/thealgorithms/maths/Area.java +++ b/src/main/java/com/thealgorithms/maths/Area.java @@ -78,7 +78,7 @@ public static double surfaceAreaSphere(final double radius) { */ public static double surfaceAreaPyramid(final double sideLength, final double slantHeight) { if (sideLength <= 0) { - throw new IllegalArgumentException(""); + throw new IllegalArgumentException("Side length must be greater than 0"); } if (slantHeight <= 0) { throw new IllegalArgumentException("slant height must be greater than 0"); @@ -232,4 +232,32 @@ public static double surfaceAreaCone(final double radius, final double height) { } return Math.PI * radius * (radius + Math.pow(height * height + radius * radius, 0.5)); } + + /** + * Calculate the surface area of a triangular prism with a right-triangle base. + * + * @param sideA first perpendicular side of the triangular base + * @param sideB second perpendicular side of the triangular base + * @param prismLength length of the prism + * @return surface area of the given triangular prism + */ + public static double surfaceAreaTriangularPrism( + final double sideA, final double sideB, final double prismLength) { + if (sideA <= 0) { + throw new IllegalArgumentException("Side A must be greater than 0"); + } + if (sideB <= 0) { + throw new IllegalArgumentException("Side B must be greater than 0"); + } + if (prismLength <= 0) { + throw new IllegalArgumentException("Prism length must be greater than 0"); + } + + double hypotenuse = Math.sqrt(sideA * sideA + sideB * sideB); + double totalTriangleArea = sideA * sideB; + double lateralSurfaceArea = prismLength * (sideA + sideB + hypotenuse); + + return triangleArea + lateralSurfaceArea; + } } + From 9eeabbc969fdc62922c288d90ee5ecbd9b7dc022 Mon Sep 17 00:00:00 2001 From: JMullin-06 Date: Thu, 29 Oct 2026 15:51:22 -0400 Subject: [PATCH 2/3] Variable name error change --- src/main/java/com/thealgorithms/maths/Area.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/maths/Area.java b/src/main/java/com/thealgorithms/maths/Area.java index 0a8fe6fdd3ec..88e3c4b2c1e0 100644 --- a/src/main/java/com/thealgorithms/maths/Area.java +++ b/src/main/java/com/thealgorithms/maths/Area.java @@ -257,7 +257,7 @@ public static double surfaceAreaTriangularPrism( double totalTriangleArea = sideA * sideB; double lateralSurfaceArea = prismLength * (sideA + sideB + hypotenuse); - return triangleArea + lateralSurfaceArea; + return totalTriangleArea + lateralSurfaceArea; } } From 4002d5a8d206f61a4dc12f3258d828193284f88d Mon Sep 17 00:00:00 2001 From: JMullin-06 Date: Thu, 29 Oct 2026 16:21:27 -0400 Subject: [PATCH 3/3] Formatting Errors --- .../java/com/thealgorithms/maths/Area.java | 6 +- .../com/thealgorithms/maths/AreaTest.java | 79 ++++++++++--------- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/Area.java b/src/main/java/com/thealgorithms/maths/Area.java index 88e3c4b2c1e0..9b798c95e1da 100644 --- a/src/main/java/com/thealgorithms/maths/Area.java +++ b/src/main/java/com/thealgorithms/maths/Area.java @@ -233,7 +233,7 @@ public static double surfaceAreaCone(final double radius, final double height) { return Math.PI * radius * (radius + Math.pow(height * height + radius * radius, 0.5)); } - /** + /** * Calculate the surface area of a triangular prism with a right-triangle base. * * @param sideA first perpendicular side of the triangular base @@ -241,8 +241,7 @@ public static double surfaceAreaCone(final double radius, final double height) { * @param prismLength length of the prism * @return surface area of the given triangular prism */ - public static double surfaceAreaTriangularPrism( - final double sideA, final double sideB, final double prismLength) { + public static double surfaceAreaTriangularPrism(final double sideA, final double sideB, final double prismLength) { if (sideA <= 0) { throw new IllegalArgumentException("Side A must be greater than 0"); } @@ -260,4 +259,3 @@ public static double surfaceAreaTriangularPrism( return totalTriangleArea + lateralSurfaceArea; } } - diff --git a/src/test/java/com/thealgorithms/maths/AreaTest.java b/src/test/java/com/thealgorithms/maths/AreaTest.java index 1c2fe53ff3f3..5836e37d58f5 100644 --- a/src/test/java/com/thealgorithms/maths/AreaTest.java +++ b/src/test/java/com/thealgorithms/maths/AreaTest.java @@ -71,44 +71,47 @@ void surfaceAreaCone() { assertEquals(301.59289474462014, Area.surfaceAreaCone(6, 8)); } + @Test + void testSurfaceAreaTriangularPrism() { + assertEquals(132.0, Area.surfaceAreaTriangularPrism(3, 4, 10), 1e-9); + } + @Test void testAllIllegalInput() { - assertAll(() - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCube(0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(0, 1, 2)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 0, 2)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 2, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSphere(0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(0, 10)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(10, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(0, 1)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(1, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSquare(0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(0, 1)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(1, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(0, 1)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(1, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(0, 1, 1)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 0, 1)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 1, 0)), - () - -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCircle(0)), - () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaHemisphere(0)), () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(1, 0)), () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(0, 1))); + assertAll( + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCube(0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(0, 1, 2)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 0, 2)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCuboid(1, 2, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSphere(0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(0, 10)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaRectangle(10, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(0, 1)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCylinder(1, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaSquare(0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(0, 1)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTriangle(1, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(0, 1)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaParallelogram(1, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(0, 1, 1)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 0, 1)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaTrapezium(1, 1, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCircle(0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaHemisphere(0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(1, 0)), + () -> assertThrows(IllegalArgumentException.class, () -> Area.surfaceAreaCone(0, 1)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(0, 4, 10)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(3, 0, 10)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(3, 4, 0)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(-3, 4, 10)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(3, -4, 10)), + () -> assertThrows(IllegalArgumentException.class, + () -> Area.surfaceAreaTriangularPrism(3, 4, -10)) + ); } -} +} \ No newline at end of file