Skip to content

Commit f4e5973

Browse files
Add TemperatureConverter to the conversions algorithms
1 parent f0a437d commit f4e5973

File tree

2 files changed

+205
-0
lines changed

2 files changed

+205
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package com.thealgorithms.conversions;
2+
3+
public class TemperatureConverter {
4+
5+
private TemperatureConverter() {
6+
}
7+
8+
// =============================================================
9+
// Celsius to Fahrenheit
10+
// =============================================================
11+
public static Double celsiusToFahrenheit(Double celsius) {
12+
if (celsius < -273.15) {
13+
throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C).");
14+
}
15+
return (celsius * 1.8) + 32;
16+
}
17+
18+
public static String celsiusToFahrenheit(String celsius) {
19+
String[] temp = celsius.replace("°C", "").trim().split(" ");
20+
double value = Double.parseDouble(temp[0]);
21+
if (value < -273.15) {
22+
throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C).");
23+
}
24+
return ((value * 1.8) + 32) + "°F";
25+
}
26+
27+
// =============================================================
28+
// Celsius to Kelvin
29+
// =============================================================
30+
public static Double celsiusToKelvin(Double celsius) {
31+
if (celsius < -273.15) {
32+
throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C).");
33+
}
34+
return celsius + 273.15;
35+
}
36+
37+
public static String celsiusToKelvin(String celsius) {
38+
String[] temp = celsius.replace("°C", "").trim().split(" ");
39+
double value = Double.parseDouble(temp[0]);
40+
if (value < -273.15) {
41+
throw new IllegalArgumentException("Temperature below absolute zero (-273.15°C).");
42+
}
43+
return (value + 273.15) + " K";
44+
}
45+
46+
// =============================================================
47+
// Fahrenheit to Celsius
48+
// =============================================================
49+
public static Double fahrenheitToCelsius(Double fahrenheit) {
50+
if (fahrenheit < -459.67) {
51+
throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F).");
52+
}
53+
return (fahrenheit - 32) * (5.0 / 9.0);
54+
}
55+
56+
public static String fahrenheitToCelsius(String fahrenheit) {
57+
String[] temp = fahrenheit.replace("°F", "").trim().split(" ");
58+
double value = Double.parseDouble(temp[0]);
59+
if (value < -459.67) {
60+
throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F).");
61+
}
62+
return ((value - 32) * (5.0 / 9.0)) + "°C";
63+
}
64+
65+
// =============================================================
66+
// Fahrenheit to Kelvin
67+
// =============================================================
68+
public static Double fahrenheitToKelvin(Double fahrenheit) {
69+
if (fahrenheit < -459.67) {
70+
throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F).");
71+
}
72+
return (fahrenheit - 32) * (5.0 / 9.0) + 273.15;
73+
}
74+
75+
public static String fahrenheitToKelvin(String fahrenheit) {
76+
String[] temp = fahrenheit.replace("°F", "").trim().split(" ");
77+
double value = Double.parseDouble(temp[0]);
78+
if (value < -459.67) {
79+
throw new IllegalArgumentException("Temperature below absolute zero (-459.67°F).");
80+
}
81+
return ((value - 32) * (5.0 / 9.0) + 273.15) + " K";
82+
}
83+
84+
// =============================================================
85+
// Kelvin to Celsius
86+
// =============================================================
87+
public static Double kelvinToCelsius(Double kelvin) {
88+
if (kelvin < 0) {
89+
throw new IllegalArgumentException("Temperature below absolute zero (0 K).");
90+
}
91+
return kelvin - 273.15;
92+
}
93+
94+
public static String kelvinToCelsius(String kelvin) {
95+
String[] temp = kelvin.replace("K", "").trim().split(" ");
96+
double value = Double.parseDouble(temp[0]);
97+
if (value < 0) {
98+
throw new IllegalArgumentException("Temperature below absolute zero (0 K).");
99+
}
100+
return (value - 273.15) + "°C";
101+
}
102+
103+
// =============================================================
104+
// Kelvin to Fahrenheit
105+
// =============================================================
106+
public static Double kelvinToFahrenheit(Double kelvin) {
107+
if (kelvin < 0) {
108+
throw new IllegalArgumentException("Temperature below absolute zero (0 K).");
109+
}
110+
return 1.8 * (kelvin - 273) + 32;
111+
}
112+
113+
public static String kelvinToFahrenheit(String kelvin) {
114+
String[] temp = kelvin.replace("K", "").trim().split(" ");
115+
double value = Double.parseDouble(temp[0]);
116+
if (value < 0) {
117+
throw new IllegalArgumentException("Temperature below absolute zero (0 K).");
118+
}
119+
return (1.8 * (value - 273) + 32) + "°F";
120+
}
121+
122+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.thealgorithms.conversions;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
import static org.junit.jupiter.api.Assertions.assertThrows;
7+
8+
public class TemperatureCoverterTest {
9+
10+
@Test
11+
public void testValidCelsiusToFahrenheit() {
12+
assertEquals(33.8, TemperatureConverter.celsiusToFahrenheit(1.0));
13+
assertEquals(34.718, TemperatureConverter.celsiusToFahrenheit(1.51));
14+
assertEquals(14.0, TemperatureConverter.celsiusToFahrenheit(-10.0));
15+
assertEquals("33.8°F", TemperatureConverter.celsiusToFahrenheit("1°C"));
16+
assertEquals("34.718°F", TemperatureConverter.celsiusToFahrenheit("1.51°C"));
17+
assertEquals("14.0°F", TemperatureConverter.celsiusToFahrenheit("-10.0°C"));
18+
}
19+
20+
@Test
21+
public void testValidCelsiusToKevin() {
22+
assertEquals(274.15, TemperatureConverter.celsiusToKelvin(1.0));
23+
assertEquals(274.65999999999997, TemperatureConverter.celsiusToKelvin(1.51));
24+
assertEquals(263.15, TemperatureConverter.celsiusToKelvin(-10.0));
25+
assertEquals("274.15 K", TemperatureConverter.celsiusToKelvin("1°C"));
26+
assertEquals("274.65999999999997 K", TemperatureConverter.celsiusToKelvin("1.51°C"));
27+
assertEquals("263.15 K", TemperatureConverter.celsiusToKelvin("-10.0°C"));
28+
}
29+
30+
@Test
31+
public void testValidFahrenheitToCelsius() {
32+
assertEquals(-17.22222222222222, TemperatureConverter.fahrenheitToCelsius(1.0));
33+
assertEquals(65.55555555555556, TemperatureConverter.fahrenheitToCelsius(150.0));
34+
assertEquals(-23.333333333333336, TemperatureConverter.fahrenheitToCelsius(-10.0));
35+
assertEquals("-17.22222222222222°C", TemperatureConverter.fahrenheitToCelsius("1°F"));
36+
assertEquals("65.55555555555556°C", TemperatureConverter.fahrenheitToCelsius("150.0°F"));
37+
assertEquals("-23.333333333333336°C", TemperatureConverter.fahrenheitToCelsius("-10.0°F"));
38+
}
39+
40+
@Test
41+
public void testValidFahrenheitToKelvin() {
42+
assertEquals(255.92777777777775, TemperatureConverter.fahrenheitToKelvin(1.0));
43+
assertEquals(328.7055555555555, TemperatureConverter.fahrenheitToKelvin(132.0));
44+
assertEquals(249.81666666666663, TemperatureConverter.fahrenheitToKelvin(-10.0));
45+
assertEquals("255.92777777777775 K", TemperatureConverter.fahrenheitToKelvin("1°F"));
46+
assertEquals("328.7055555555555 K", TemperatureConverter.fahrenheitToKelvin("132°F"));
47+
assertEquals("249.81666666666663 K", TemperatureConverter.fahrenheitToKelvin("-10.0°F"));
48+
}
49+
50+
@Test
51+
public void testValidKelvinToCelsius() {
52+
assertEquals(-272.15, TemperatureConverter.kelvinToCelsius(1.0));
53+
assertEquals(-141.14999999999998, TemperatureConverter.kelvinToCelsius(132.0));
54+
assertEquals(-263.15, TemperatureConverter.kelvinToCelsius(10.0));
55+
assertEquals("-272.15°C", TemperatureConverter.kelvinToCelsius("1.0 K"));
56+
assertEquals("-141.14999999999998°C", TemperatureConverter.kelvinToCelsius("132.0 K"));
57+
assertEquals("-263.15°C", TemperatureConverter.kelvinToCelsius("10.0 K"));
58+
}
59+
60+
@Test
61+
public void testValidKelvinToFahrenheit() {
62+
assertEquals(-457.6, TemperatureConverter.kelvinToFahrenheit(1.0));
63+
assertEquals(-221.8, TemperatureConverter.kelvinToFahrenheit(132.0));
64+
assertEquals(-441.40000000000003, TemperatureConverter.kelvinToFahrenheit(10.0));
65+
assertEquals("-457.6°F", TemperatureConverter.kelvinToFahrenheit("1.0 K"));
66+
assertEquals("-221.8°F", TemperatureConverter.kelvinToFahrenheit("132.0 K"));
67+
assertEquals("-441.40000000000003°F", TemperatureConverter.kelvinToFahrenheit("10.0 K"));
68+
}
69+
70+
@Test
71+
public void testAbsoluteZeroAndBelow() {
72+
73+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToFahrenheit(-300.0));
74+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.celsiusToKelvin("-300°C"));
75+
76+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToCelsius(-500.0));
77+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.fahrenheitToKelvin("-500°F"));
78+
79+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToCelsius(-1.0));
80+
assertThrows(IllegalArgumentException.class, () -> TemperatureConverter.kelvinToFahrenheit("-1 K"));
81+
}
82+
83+
}

0 commit comments

Comments
 (0)