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
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
Post a Comment