I am new to programming. I picked up a C# course from freeCodeCamp.org a few days ago and today I created my first code from scratch. I know probably it's not the best optimized but it works. Some things still don't make sense to me completely but I hope in the future it will all click.
However, I am making this post to try to reach to more experienced C# developers to see what I could've done better.
Thank you for your time!
namespace UnitConverter
{
internal class Program
{
static void Main(string[] args)
{
string firstMeasure;
string secondMeasure;
double MeasureValue;
bool tryAgain = true;
string playAgain;
bool valueIsGood = false;
bool valueIsGood2 = false;
bool valueIsGood3 = false;
string restart;
while (tryAgain)
{
Console.WriteLine("--------------");
Console.WriteLine("UNIT CONVERTER");
Console.WriteLine("--------------");
Console.WriteLine("");
Console.WriteLine("Choose your first measurement");
Console.WriteLine("km - kilometers");
Console.WriteLine("m - meters");
Console.WriteLine("cm - centimeters");
Console.Write("Choose: ");
do
{
firstMeasure = Console.ReadLine();
firstMeasure = firstMeasure.ToUpper();
if (firstMeasure == "km".ToUpper() || firstMeasure == "cm".ToUpper() || firstMeasure == "m".ToUpper())
{
Console.Write("Value in " + firstMeasure + ": ");
valueIsGood = true;
}
else
{
Console.WriteLine("Incorrect measurement");
Console.Write("Choose: ");
}
} while (!valueIsGood);
while (!double.TryParse(Console.ReadLine(), out MeasureValue))
{
Console.WriteLine("This is not a number!");
Console.Write("Choose: ");
}
Console.WriteLine("Choose your second measurement");
Console.WriteLine("km - kilometers");
Console.WriteLine("m - meters");
Console.WriteLine("cm - centimeters");
Console.Write("Choose: ");
do
{
secondMeasure = Console.ReadLine();
secondMeasure = secondMeasure.ToUpper();
if (secondMeasure == "km".ToUpper() || secondMeasure == "cm".ToUpper() || secondMeasure == "m".ToUpper())
{
valueIsGood2 = true;
}
else
{
Console.WriteLine("Incorrect measurement");
Console.Write("Choose: ");
}
} while (!valueIsGood2);
if (secondMeasure == "km".ToUpper() || secondMeasure == "cm".ToUpper() || secondMeasure == "m".ToUpper())
{
if (firstMeasure == "km".ToUpper() && secondMeasure == "km".ToUpper())
{
double result = MeasureValue * 1;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "km".ToUpper() && secondMeasure == "m".ToUpper())
{
double result = MeasureValue * 1000;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "km".ToUpper() && secondMeasure == "cm".ToUpper())
{
double result = MeasureValue * 100000;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "m".ToUpper() && secondMeasure == "km".ToUpper())
{
double result = MeasureValue / 1000;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "m".ToUpper() && secondMeasure == "m".ToUpper())
{
double result = MeasureValue * 1;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "m".ToUpper() && secondMeasure == "cm".ToUpper())
{
double result = MeasureValue * 100;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "cm".ToUpper() && secondMeasure == "km".ToUpper())
{
double result = MeasureValue / 100000;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "cm".ToUpper() && secondMeasure == "m".ToUpper())
{
double result = MeasureValue / 100;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
else if (firstMeasure == "cm".ToUpper() && secondMeasure == "cm".ToUpper())
{
double result = MeasureValue * 1;
Console.WriteLine("RESULT: " + MeasureValue + firstMeasure + " is " + result + secondMeasure);
}
}
do
{
Console.WriteLine("Try again? - Y/N");
restart = Console.ReadLine();
restart = restart.ToUpper();
if (restart == "Y")
{
valueIsGood3 = true;
}
else if (restart == "N")
{
Console.WriteLine("Thank you for using the calculator!");
Console.WriteLine("Exiting in...");
for (int i = 5; i >= 1; i--)
{
Console.WriteLine(i);
int milliseconds = 1000;
Thread.Sleep(milliseconds);
}
valueIsGood3 = true;
tryAgain = false;
} else
{
Console.WriteLine("Incorrect answer.");
Console.WriteLine("Options: Y or N");
valueIsGood3 = false;
tryAgain = true;
}
} while (!valueIsGood3);
}
}
}
}