Не очень понятно что конкретно у вас не получилось. Сама идея правильная - вынести общий функционал в метод.
Единственное что могло бы вызвать сложность так это сделать дополнительное ограничение на введенные данные. Например, у вас для параметра
a еще требуется четность. Для этого можно просто передавать фильтр:
static int ReadInt(Func<int, bool> filter)
{
while (true)
{
var a = Console.ReadLine();
bool a_number = int.TryParse(a, out int ai);
if (a_number && filter(ai))
{
return ai;
}
else
{
Console.WriteLine("Некорректные данные. Попробуйте еще раз.");
}
}
}
и пример вызова
Console.Write($"\nВведите четное значение <a>: ");
var a = ReadInt(a => a % 2 == 0);