Answer the question
In order to leave comments, you need to log in
How to process a function and record all its errors and output the result?
A question.
I have a loop that processes an input parameter, keeps track of what the user enters.
Those. he must enter even numbers, if he enters a symbol, fractional number, letter, etc., then an error message appears. And so on for each variable. And how can I make it so that it does not immediately issue a message, but writes down everything that the user entered and at the end only gives a general error message that several parameters were entered incorrectly?
static int GetInput(string paramName, Severity ex)
{
//задаем произвольное начальное значение
int result = Int32.MinValue;
//цикл обработки значения
while (true)
{
try
{
Console.Write($"\nВведите значение <{paramName}>: ");
var x = Console.ReadLine();
int xi = int.Parse(x);
result = xi;
if (xi % 2 == 0)
{
break;
}
Throw(ex);
throw new System.FormatException();
}
//сообщение об ошибке на ввод нечетного числа
catch (ArgumentNullException) { }
//сообщение об ошибке на ввод букв, дробных значений и т.д.
catch (System.FormatException)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("\n***********************************************************************");
Console.WriteLine("*Ошибка: Один из идентифицированных элементов имел недопустимый формат*");
Console.WriteLine("***********************************************************************");
Console.ResetColor();
}
}
return result;
}
Введите значение <a>: вап
***********************************************************************
*Ошибка: Один из идентифицированных элементов имел недопустимый формат*
***********************************************************************
Введите значение <a>: вап
Введите значение <b>: 1.5
Введите значение <c>: ...
***********************************************************************
*Ошибка: Один из идентифицированных элементов имел недопустимый формат*
***********************************************************************
Введенное значение <a>: вап
Введенное значение <b>: 1.5
Введенное значение <c>: ...
***********************************************************************
Введите значение <a>:
Answer the question
In order to leave comments, you need to log in
static int GetInput(string paramName)
{
while (true)
{
Console.Write($"\nВведите значение <{paramName}>: ");
if (int.TryParse(Console.ReadLine(), out int xi) && xi % 2 == 0) return xi;
else
{
Console.BackgroundColor = ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("\n***********************************************************************");
Console.WriteLine("*Ошибка: Один из идентифицированных элементов имел недопустимый формат*");
Console.WriteLine("***********************************************************************");
Console.ResetColor();
}
}
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question