Example #1
0
        private static void TemperatureConverter()
        {
            ICalculator calculator = new TemperatureCalculator();

            Console.WriteLine("What temperature unit do you want to convert from?");
            Console.WriteLine("Options: 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
            Console.WriteLine("Type 'exit' to stop the program.");
            var convertFrom = Console.ReadLine();

            while (!int.TryParse(convertFrom, out int number) || (Convert.ToInt32(convertFrom) < 1 || Convert.ToInt32(convertFrom) > 3))
            {
                Console.WriteLine("Error write only numbers and it must be between 1 and 3");
                Console.WriteLine("Type 'exit' to stop the program.");
                convertFrom = Console.ReadLine();

                if (convertFrom.ToLower() == "exit")
                {
                    break;
                }
            }

            Console.WriteLine("What temperature unit do you want to convert to?");
            Console.WriteLine("Options: 1 for Celsius, 2 for Fahrenheit and 3 for Kelvin");
            Console.WriteLine("Type 'exit' to stop the program.");
            var convertTo = Console.ReadLine();

            while (!int.TryParse(convertTo, out int number) || (Convert.ToInt32(convertTo) < 1 || Convert.ToInt32(convertTo) > 3))
            {
                Console.WriteLine("Error write only numbers and it must be between 1 and 3");
                Console.WriteLine("Type 'exit' to stop the program.");
                convertTo = Console.ReadLine();

                if (convertTo.ToLower() == "exit")
                {
                    break;
                }
            }

            Console.WriteLine("What is the value you want to convert?");
            Console.WriteLine("Type 'exit' to stop the program.");
            var valueToConvert = Console.ReadLine();

            while (!double.TryParse(valueToConvert, out double number))
            {
                Console.WriteLine("Error write only numbers.");
                Console.WriteLine("Type 'exit' to stop the program.");
                valueToConvert = Console.ReadLine();

                if (valueToConvert.ToLower() == "exit")
                {
                    break;
                }
            }

            IUnit from = null;
            IUnit to   = null;

            double valueInDoubleToConvert = double.Parse(valueToConvert);

            switch (convertFrom)
            {
            case "1":
                from = new Celsius {
                    Value = valueInDoubleToConvert
                };
                break;

            case "2":
                from = new Fahrenheit {
                    Value = valueInDoubleToConvert
                };
                break;

            case "3":
                from = new Kelvin {
                    Value = valueInDoubleToConvert
                };
                break;
            }

            switch (convertTo)
            {
            case "1":
                to = new Celsius();
                break;

            case "2":
                to = new Fahrenheit();
                break;

            case "3":
                to = new Kelvin();
                break;
            }

            var result = calculator.Calculate(from, to);

            Console.WriteLine($"Well, {from.Value} degrees {from.Name} is equal to {result} degrees {to.Name}.");
        }