Так что, когда я имею дело с числами, все работает нормально, это просто когда я использую нечисловые записи. (Я помещаю комментарии там, где есть проблемы)
Когда вы вводите что-либо, кроме цифр, должно появиться сообщение об ошибке, а затем снова предложит вам ввести правильную запись. Если вы введете другое нечисловое значение вместо того, чтобы оставаться в цикле, tryParse изменит значение на 0 и, следовательно, выйдет из цикла и завершит программу. Как мне обойти это?
Я хочу выйти из цикла только тогда, когда введу 0, а не символ, который запускает tryParse, чтобы изменить символ на 0.
Я пытался удалитьtryParse в конце, но первое условие в операторе if делает его ложным, и поэтому диаметр по-прежнему становится равным 0.
static void Main()
{
const double MINIMUM_DIAMETER = 12.0;
const double MAXIMUM_DIAMETER = 36.0;
double diameter, radius, area, sliceArea;
string userInput;
Console.Write("\nPlease enter the diameter of your pizza: ");
userInput = Console.ReadLine();
do
{
if (double.TryParse(userInput, out diameter) == false)
{
Console.WriteLine("\nENTRY NON-NUMBERIC ERROR\n");
Console.WriteLine("Pizza must have a numeric diameter. You entered: \"{0}\"\n", userInput);
Console.WriteLine("Please try again.\n");
//**if userInput isn't valid, diameter becomes 0**
}
else
{
if (diameter < MINIMUM_DIAMETER || diameter > MAXIMUM_DIAMETER)
{
//not important
}
else
{
//not important
}
}
Console.Write("\nPlease enter the diameter of your pizza (0 to end program): ");
userInput = Console.ReadLine();
double.TryParse(userInput, out diameter);
Console.Clear();
//**if userInput isn't valid, diameter becomes 0 and exits loop**
} while (diameter != 0);
}