Beginner: Temperature Converter in C#

Introduction

In this tutorial, we will create a simple console application in C# that converts temperatures between Celsius, Fahrenheit, and Kelvin. This is a great project for beginners to practice basic programming concepts and console input/output operations.

Code Implementation:

ITemperatureConverter


    internal interface ITemperatureConverter
    {
        TemperatureUnit ReadConvertUnit(string baseUnit);

        bool IsInputValid(string baseValue, TemperatureUnit baseUnit, TemperatureUnit targetUnit);

        decimal Process(string baseUnitValue, TemperatureUnit baseUnitEnum, TemperatureUnit targetUnitEnum);
    }

TemperatureDataService

Read user input

public TemperatureUnit ReadConvertUnit(string inputUnit) { if (!int.TryParse(inputUnit, out var unit)) { Console.WriteLine("Invalid temperature unit. Please enter convert unit: "); inputUnit = Console.ReadLine(); ReadConvertUnit(inputUnit); } return unit switch { 1 => TemperatureUnit.Celcuis, 2 => TemperatureUnit.Fahrenheit, 3 => TemperatureUnit.Kelvin, _ => TemperatureUnit.None, }; }

Process temperature 


   public decimal Process(string baseUnitValue, TemperatureUnit baseUnitEnum, TemperatureUnit targetUnitEnum)
     {//bodmasc
         decimal.TryParse(baseUnitValue, out var parseBaseUnitValue);

         if (baseUnitEnum == TemperatureUnit.Celcuis)
         {
             //Celsius to Kelvin: K = C + 273.15
             if (targetUnitEnum == TemperatureUnit.Kelvin)
                 return parseBaseUnitValue + 273.15m;

             //Celsius to Fahrenheit: F = C(9 / 5) + 32
             if (targetUnitEnum == TemperatureUnit.Fahrenheit)
                 return parseBaseUnitValue * (9m / 5m) + 32;
         }

         if (baseUnitEnum == TemperatureUnit.Fahrenheit)
         {
             //Fahrenheit to Celcius: C = (F - 32)(5 / 9)
             if (targetUnitEnum == TemperatureUnit.Celcuis)
                 return (parseBaseUnitValue - 32) * (5 / 9);

             //Fahrenheit to Kelvin: K = (F - 32)(5 / 9) + 273.15
             if (targetUnitEnum == TemperatureUnit.Kelvin)
                 return (parseBaseUnitValue - 32m) * (5m / 9m) + 273.15m;
         }

         if (baseUnitEnum == TemperatureUnit.Kelvin)
         {
             //Kelvin to Celcius: C = K - 273.15
             if (targetUnitEnum == TemperatureUnit.Celcuis)
                 return parseBaseUnitValue - 273.15m;

             //Kelvin to Fahrenheit: F = (K - 273.15)(9 / 5) + 32
             if (targetUnitEnum == TemperatureUnit.Fahrenheit)
                 return (parseBaseUnitValue - 273.15m) * (9m / 5m) + 32;
         }

         return 0;
     }
 
   

Program

Read user input


    var converter = new TemperatureConverter.TemperatureDataService();

    Console.WriteLine("====== Welcome to temperature converter ======");
    Console.WriteLine("Enter the temprature unit to convert from: ");
    Console.WriteLine("         1 - Celsius");
    Console.WriteLine("         2 - Fahrenheit");
    Console.WriteLine("         3 - Kelvin");

    var baseUnit = Console.ReadLine();
    TemperatureUnit BaseUnitEnum = converter.ReadConvertUnit(baseUnit);
    Console.WriteLine("Enter base temparature value: ");
    var baseUnitValue = Console.ReadLine();

    Console.WriteLine("Enter the temprature unit to convert to: ");
    Console.WriteLine("         1 - Celsius");
    Console.WriteLine("         2 - Fahrenheit");
    Console.WriteLine("         3 - Kelvin");

    var targetUnit = Console.ReadLine();
    TemperatureUnit targetUnitEnum = converter.ReadConvertUnit(targetUnit);
   

Validate user input


  if(!converter.IsInputValid(baseUnitValue, BaseUnitEnum, targetUnitEnum))
  {
      Console.WriteLine("Invalid temperature input");
      Environment.Exit(0);
  }
  
   

Convert temperature process


    
var result = converter.Process(baseUnitValue, BaseUnitEnum, targetUnitEnum);

Console.WriteLine($"Converted temperature from {BaseUnitEnum.ToString()} to {targetUnitEnum.ToString()} is {result}");
  
  

Screenshot

Below is a screenshot of the console application in action.

Explanation

In this program, the user is prompted to select the type of temperature conversion they want to perform. Depending on the user's choice, the program reads the input temperature, performs the appropriate conversion, and displays the result.

Conclusion

This simple console application demonstrates how to handle user input, perform arithmetic operations, and display output in a console application using C#. Feel free to modify and expand this project to include additional features or handle more types of temperature conversions.



Code Repository 

You can find the source code for this project on my GitHub repository.

Comments

Popular posts from this blog

C# Windows Form : PetCare

Car Wash System vb.net

Fake Call Android Application