From f4e5973caa8173d0ca11c2f1a8ba62ac07a9fc8a Mon Sep 17 00:00:00 2001 From: AlexJauregui02 Date: Tue, 4 Nov 2025 19:13:48 -0700 Subject: [PATCH 1/5] Add TemperatureConverter to the conversions algorithms --- .../conversions/TemperatureConverter.java | 122 ++++++++++++++++++ .../conversions/TemperatureCoverterTest.java | 83 ++++++++++++ 2 files changed, 205 insertions(+) create mode 100644 src/main/java/com/thealgorithms/conversions/TemperatureConverter.java create mode 100644 src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java diff --git a/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java new file mode 100644 index 000000000000..06608306a3d8 --- /dev/null +++ b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java @@ -0,0 +1,122 @@ +package com.thealgorithms.conversions; + +public class TemperatureConverter { + + private TemperatureConverter() { + } + + // ============================================================= + // Celsius to Fahrenheit + // ============================================================= + public static Double celsiusToFahrenheit(Double celsius) { + if (celsius < -273.15) { + throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); + } + return (celsius * 1.8) + 32; + } + + public static String celsiusToFahrenheit(String celsius) { + String[] temp = celsius.replace("°C", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < -273.15) { + throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); + } + return ((value * 1.8) + 32) + "°F"; + } + + // ============================================================= + // Celsius to Kelvin + // ============================================================= + public static Double celsiusToKelvin(Double celsius) { + if (celsius < -273.15) { + throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); + } + return celsius + 273.15; + } + + public static String celsiusToKelvin(String celsius) { + String[] temp = celsius.replace("°C", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < -273.15) { + throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); + } + return (value + 273.15) + " K"; + } + + // ============================================================= + // Fahrenheit to Celsius + // ============================================================= + public static Double fahrenheitToCelsius(Double fahrenheit) { + if (fahrenheit < -459.67) { + throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); + } + return (fahrenheit - 32) * (5.0 / 9.0); + } + + public static String fahrenheitToCelsius(String fahrenheit) { + String[] temp = fahrenheit.replace("°F", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < -459.67) { + throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); + } + return ((value - 32) * (5.0 / 9.0)) + "°C"; + } + + // ============================================================= + // Fahrenheit to Kelvin + // ============================================================= + public static Double fahrenheitToKelvin(Double fahrenheit) { + if (fahrenheit < -459.67) { + throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); + } + return (fahrenheit - 32) * (5.0 / 9.0) + 273.15; + } + + public static String fahrenheitToKelvin(String fahrenheit) { + String[] temp = fahrenheit.replace("°F", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < -459.67) { + throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); + } + return ((value - 32) * (5.0 / 9.0) + 273.15) + " K"; + } + + // ============================================================= + // Kelvin to Celsius + // ============================================================= + public static Double kelvinToCelsius(Double kelvin) { + if (kelvin < 0) { + throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); + } + return kelvin - 273.15; + } + + public static String kelvinToCelsius(String kelvin) { + String[] temp = kelvin.replace("K", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < 0) { + throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); + } + return (value - 273.15) + "°C"; + } + + // ============================================================= + // Kelvin to Fahrenheit + // ============================================================= + public static Double kelvinToFahrenheit(Double kelvin) { + if (kelvin < 0) { + throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); + } + return 1.8 * (kelvin - 273) + 32; + } + + public static String kelvinToFahrenheit(String kelvin) { + String[] temp = kelvin.replace("K", "").trim().split(" "); + double value = Double.parseDouble(temp[0]); + if (value < 0) { + throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); + } + return (1.8 * (value - 273) + 32) + "°F"; + } + +} diff --git a/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java b/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java new file mode 100644 index 000000000000..3077a059aa25 --- /dev/null +++ b/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java @@ -0,0 +1,83 @@ +package com.thealgorithms.conversions; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class TemperatureCoverterTest { + + @Test + public void testValidCelsiusToFahrenheit() { + assertEquals(33.8, TemperatureConverter.celsiusToFahrenheit(1.0)); + assertEquals(34.718, TemperatureConverter.celsiusToFahrenheit(1.51)); + assertEquals(14.0, TemperatureConverter.celsiusToFahrenheit(-10.0)); + assertEquals("33.8°F", TemperatureConverter.celsiusToFahrenheit("1°C")); + assertEquals("34.718°F", TemperatureConverter.celsiusToFahrenheit("1.51°C")); + assertEquals("14.0°F", TemperatureConverter.celsiusToFahrenheit("-10.0°C")); + } + + @Test + public void testValidCelsiusToKevin() { + assertEquals(274.15, TemperatureConverter.celsiusToKelvin(1.0)); + assertEquals(274.65999999999997, TemperatureConverter.celsiusToKelvin(1.51)); + assertEquals(263.15, TemperatureConverter.celsiusToKelvin(-10.0)); + assertEquals("274.15 K", TemperatureConverter.celsiusToKelvin("1°C")); + assertEquals("274.65999999999997 K", TemperatureConverter.celsiusToKelvin("1.51°C")); + assertEquals("263.15 K", TemperatureConverter.celsiusToKelvin("-10.0°C")); + } + + @Test + public void testValidFahrenheitToCelsius() { + assertEquals(-17.22222222222222, TemperatureConverter.fahrenheitToCelsius(1.0)); + assertEquals(65.55555555555556, TemperatureConverter.fahrenheitToCelsius(150.0)); + assertEquals(-23.333333333333336, TemperatureConverter.fahrenheitToCelsius(-10.0)); + assertEquals("-17.22222222222222°C", TemperatureConverter.fahrenheitToCelsius("1°F")); + assertEquals("65.55555555555556°C", TemperatureConverter.fahrenheitToCelsius("150.0°F")); + assertEquals("-23.333333333333336°C", TemperatureConverter.fahrenheitToCelsius("-10.0°F")); + } + + @Test + public void testValidFahrenheitToKelvin() { + assertEquals(255.92777777777775, TemperatureConverter.fahrenheitToKelvin(1.0)); + assertEquals(328.7055555555555, TemperatureConverter.fahrenheitToKelvin(132.0)); + assertEquals(249.81666666666663, TemperatureConverter.fahrenheitToKelvin(-10.0)); + assertEquals("255.92777777777775 K", TemperatureConverter.fahrenheitToKelvin("1°F")); + assertEquals("328.7055555555555 K", TemperatureConverter.fahrenheitToKelvin("132°F")); + assertEquals("249.81666666666663 K", TemperatureConverter.fahrenheitToKelvin("-10.0°F")); + } + + @Test + public void testValidKelvinToCelsius() { + assertEquals(-272.15, TemperatureConverter.kelvinToCelsius(1.0)); + assertEquals(-141.14999999999998, TemperatureConverter.kelvinToCelsius(132.0)); + assertEquals(-263.15, TemperatureConverter.kelvinToCelsius(10.0)); + assertEquals("-272.15°C", TemperatureConverter.kelvinToCelsius("1.0 K")); + assertEquals("-141.14999999999998°C", TemperatureConverter.kelvinToCelsius("132.0 K")); + assertEquals("-263.15°C", TemperatureConverter.kelvinToCelsius("10.0 K")); + } + + @Test + public void testValidKelvinToFahrenheit() { + assertEquals(-457.6, TemperatureConverter.kelvinToFahrenheit(1.0)); + assertEquals(-221.8, TemperatureConverter.kelvinToFahrenheit(132.0)); + assertEquals(-441.40000000000003, TemperatureConverter.kelvinToFahrenheit(10.0)); + assertEquals("-457.6°F", TemperatureConverter.kelvinToFahrenheit("1.0 K")); + assertEquals("-221.8°F", TemperatureConverter.kelvinToFahrenheit("132.0 K")); + assertEquals("-441.40000000000003°F", TemperatureConverter.kelvinToFahrenheit("10.0 K")); + } + + @Test + public void testAbsoluteZeroAndBelow() { + + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToFahrenheit(-300.0)); + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToKelvin("-300°C")); + + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToCelsius(-500.0)); + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToKelvin("-500°F")); + + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToCelsius(-1.0)); + assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToFahrenheit("-1 K")); + } + +} \ No newline at end of file From 8d891d82060fdca94b76920ebf8ef92de0cd3a0c Mon Sep 17 00:00:00 2001 From: AlexJauregui02 Date: Wed, 5 Nov 2025 09:30:12 -0700 Subject: [PATCH 2/5] Add TemperatureConverter to the conversions algorithms --- .../conversions/TemperatureConverter.java | 59 ++++++++++++------- .../conversions/TemperatureCoverterTest.java | 12 ++-- 2 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java index 06608306a3d8..d75acac349ae 100644 --- a/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java +++ b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java @@ -1,13 +1,27 @@ package com.thealgorithms.conversions; +/** + * Utility class for converting temperatures between Celsius, Fahrenheit, and Kelvin. + * + *

Formulas reference: + * ... + *

Note: Some of the formulas presented on the wikipedia page are not correct + * + *

Examples: + *

+ */ public class TemperatureConverter { private TemperatureConverter() { } - // ============================================================= - // Celsius to Fahrenheit - // ============================================================= + /** + * Converts Celsius to Fahrenheit. + * Formula: °C × 9/5 + 32 + */ public static Double celsiusToFahrenheit(Double celsius) { if (celsius < -273.15) { throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); @@ -24,9 +38,10 @@ public static String celsiusToFahrenheit(String celsius) { return ((value * 1.8) + 32) + "°F"; } - // ============================================================= - // Celsius to Kelvin - // ============================================================= + /** + * Converts Celsius to Kelvin. + * Formula: °C + 273.15 + */ public static Double celsiusToKelvin(Double celsius) { if (celsius < -273.15) { throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C)."); @@ -43,9 +58,10 @@ public static String celsiusToKelvin(String celsius) { return (value + 273.15) + " K"; } - // ============================================================= - // Fahrenheit to Celsius - // ============================================================= + /** + * Converts: Fahrenheit to Celsius. + * Formula: (°F - 32) * 5/9 + */ public static Double fahrenheitToCelsius(Double fahrenheit) { if (fahrenheit < -459.67) { throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); @@ -62,9 +78,10 @@ public static String fahrenheitToCelsius(String fahrenheit) { return ((value - 32) * (5.0 / 9.0)) + "°C"; } - // ============================================================= - // Fahrenheit to Kelvin - // ============================================================= + /** + * Converts: Fahrenheit to Kelvin. + * Formula: (°F - 32) * 5/9 + 273.15 + */ public static Double fahrenheitToKelvin(Double fahrenheit) { if (fahrenheit < -459.67) { throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F)."); @@ -81,9 +98,10 @@ public static String fahrenheitToKelvin(String fahrenheit) { return ((value - 32) * (5.0 / 9.0) + 273.15) + " K"; } - // ============================================================= - // Kelvin to Celsius - // ============================================================= + /** + * Converts: Kelvin to Celsius. + * Formula: K - 273.15 + */ public static Double kelvinToCelsius(Double kelvin) { if (kelvin < 0) { throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); @@ -100,14 +118,15 @@ public static String kelvinToCelsius(String kelvin) { return (value - 273.15) + "°C"; } - // ============================================================= - // Kelvin to Fahrenheit - // ============================================================= + /** + * Converts: Kelvin to Fahrenheit. + * Formula: (K - 273.15) * 9/5 + 32 + */ public static Double kelvinToFahrenheit(Double kelvin) { if (kelvin < 0) { throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); } - return 1.8 * (kelvin - 273) + 32; + return 1.8 * (kelvin - 273.15) + 32; } public static String kelvinToFahrenheit(String kelvin) { @@ -116,7 +135,7 @@ public static String kelvinToFahrenheit(String kelvin) { if (value < 0) { throw new IllegalArgumentException("Temperature below absolute zero (0 K)."); } - return (1.8 * (value - 273) + 32) + "°F"; + return (1.8 * (value - 273.15) + 32) + "°F"; } } diff --git a/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java b/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java index 3077a059aa25..2d439e1e4daa 100644 --- a/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java @@ -59,12 +59,12 @@ public void testValidKelvinToCelsius() { @Test public void testValidKelvinToFahrenheit() { - assertEquals(-457.6, TemperatureConverter.kelvinToFahrenheit(1.0)); - assertEquals(-221.8, TemperatureConverter.kelvinToFahrenheit(132.0)); - assertEquals(-441.40000000000003, TemperatureConverter.kelvinToFahrenheit(10.0)); - assertEquals("-457.6°F", TemperatureConverter.kelvinToFahrenheit("1.0 K")); - assertEquals("-221.8°F", TemperatureConverter.kelvinToFahrenheit("132.0 K")); - assertEquals("-441.40000000000003°F", TemperatureConverter.kelvinToFahrenheit("10.0 K")); + assertEquals(-457.86999999999995, TemperatureConverter.kelvinToFahrenheit(1.0)); + assertEquals(-222.06999999999996, TemperatureConverter.kelvinToFahrenheit(132.0)); + assertEquals(-441.66999999999996, TemperatureConverter.kelvinToFahrenheit(10.0)); + assertEquals("-457.86999999999995°F", TemperatureConverter.kelvinToFahrenheit("1.0 K")); + assertEquals("-222.06999999999996°F", TemperatureConverter.kelvinToFahrenheit("132.0 K")); + assertEquals("-441.66999999999996°F", TemperatureConverter.kelvinToFahrenheit("10.0 K")); } @Test From e33e9ca09286f8ac1d9a8310ee5aa0417ec0d467 Mon Sep 17 00:00:00 2001 From: AlexJauregui02 Date: Wed, 5 Nov 2025 09:32:28 -0700 Subject: [PATCH 3/5] renamed the test file --- ...mperatureCoverterTest.java => TemperatureConverterTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/com/thealgorithms/conversions/{TemperatureCoverterTest.java => TemperatureConverterTest.java} (99%) diff --git a/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java b/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java similarity index 99% rename from src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java rename to src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java index 2d439e1e4daa..f0ad1ea17d83 100644 --- a/src/test/java/com/thealgorithms/conversions/TemperatureCoverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java @@ -5,7 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -public class TemperatureCoverterTest { +public class TemperatureConverterTest { @Test public void testValidCelsiusToFahrenheit() { From c8220518aeac24bcdd40241415ceff4e227eb0bf Mon Sep 17 00:00:00 2001 From: AlexJauregui02 Date: Wed, 5 Nov 2025 09:43:36 -0700 Subject: [PATCH 4/5] Fixed build errors --- .../com/thealgorithms/conversions/TemperatureConverter.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java index d75acac349ae..70af50bdea96 100644 --- a/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java +++ b/src/main/java/com/thealgorithms/conversions/TemperatureConverter.java @@ -13,7 +13,7 @@ *
  • -40 °C = -40 °F
  • * */ -public class TemperatureConverter { +public final class TemperatureConverter { private TemperatureConverter() { } @@ -137,5 +137,4 @@ public static String kelvinToFahrenheit(String kelvin) { } return (1.8 * (value - 273.15) + 32) + "°F"; } - } From 63e620383998e2a8f9205fa579f3c792735a79a3 Mon Sep 17 00:00:00 2001 From: AlexJauregui02 Date: Wed, 5 Nov 2025 09:50:09 -0700 Subject: [PATCH 5/5] Fixed format issues --- .../conversions/TemperatureConverterTest.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java b/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java index f0ad1ea17d83..f90891b542c2 100644 --- a/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java +++ b/src/test/java/com/thealgorithms/conversions/TemperatureConverterTest.java @@ -1,10 +1,10 @@ package com.thealgorithms.conversions; -import org.junit.jupiter.api.Test; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; + public class TemperatureConverterTest { @Test @@ -69,15 +69,11 @@ public void testValidKelvinToFahrenheit() { @Test public void testAbsoluteZeroAndBelow() { - assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToFahrenheit(-300.0)); assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToKelvin("-300°C")); - assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToCelsius(-500.0)); assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToKelvin("-500°F")); - assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToCelsius(-1.0)); assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToFahrenheit("-1 K")); } - -} \ No newline at end of file +}