diff --git a/src/main/java/com/thealgorithms/conversions/TemperatureConversion.java b/src/main/java/com/thealgorithms/conversions/TemperatureConversion.java new file mode 100644 index 000000000000..1f52666b1acc --- /dev/null +++ b/src/main/java/com/thealgorithms/conversions/TemperatureConversion.java @@ -0,0 +1,77 @@ +package com.thealgorithms.conversions; + +import java.util.Scanner; + +/** + * This class converts Decimal numbers to Octal Numbers + */ +public class TemperatureConversion { + + /** + * Main Method + * + * @param args Command line Arguments + */ + + // enter in a decimal value to get Octal output + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + System.out.println("Temperature Converter"); + + while (true) { + System.out.println("Enter the temperature value:"); + double value = scanner.nextDouble(); + + System.out.println("Enter the scale of the input temperature (C/F/K):"); + String inputScale = scanner.next().toUpperCase(); + + System.out.println("Enter the scale you want to convert to (C/F/K):"); + String outputScale = scanner.next().toUpperCase(); + + double result = convertTemperature(value, inputScale, outputScale); + System.out.println("Converted temperature: " + result + " " + outputScale); + + System.out.println("Do you want to convert another temperature? (yes/no)"); + String continueChoice = scanner.next().toLowerCase(); + if (!continueChoice.equals("yes")) { + System.out.println("Exiting the program..."); + break; + } + } + + scanner.close(); + } + + public static double convertTemperature(double value, String inputScale, String outputScale) { + double result = 0; + + if (inputScale.equals("C")) { + if (outputScale.equals("F")) { + result = (value * 9 / 5) + 32; + } else if (outputScale.equals("K")) { + result = value + 273.15; + } else { + result = value; // Same scale conversion + } + } else if (inputScale.equals("F")) { + if (outputScale.equals("C")) { + result = (value - 32) * 5 / 9; + } else if (outputScale.equals("K")) { + result = (value + 459.67) * 5 / 9; + } else { + result = value; // Same scale conversion + } + } else if (inputScale.equals("K")) { + if (outputScale.equals("C")) { + result = value - 273.15; + } else if (outputScale.equals("F")) { + result = (value * 9 / 5) - 459.67; + } else { + result = value; // Same scale conversion + } + } + + return result; + } +} \ No newline at end of file diff --git a/src/test/java/com/thealgorithms/conversions/TemperatureConversionTest.java b/src/test/java/com/thealgorithms/conversions/TemperatureConversionTest.java new file mode 100644 index 000000000000..990a5bde4e39 --- /dev/null +++ b/src/test/java/com/thealgorithms/conversions/TemperatureConversionTest.java @@ -0,0 +1,19 @@ +package com.thealgorithms.conversions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class TemperatureConversionTest { + + @Test + public void testTemperatureConversion() + { + assertEquals(211.6, TemperatureConversion.convertTemperature(79, "C", "F")); + assertEquals(411.15, TemperatureConversion.convertTemperature(138, "C", "K")); + assertEquals(11.67, TemperatureConversion.convertTemperature(53, "F", "C")); + assertEquals(293.7055555555556, TemperatureConversion.convertTemperature(69, "F", "K")); + assertEquals(-123.15, TemperatureConversion.convertTemperature(150, "K", "C")); + assertEquals(-99.67, TemperatureConversion.convertTemperature(200, "K", "F")); + } +}