Другие языки программирования и технологии

C#. Как сделать, чтобы программа проверяла тип введённой переменной?

Программа должна решать выражение k = a * x + b * x + c * x + (a * x + b * x + c), где x =2.5.
При этом если ввести букву, а не число, программа должна сказать, что это не число и просить ввести число бесконечное количество раз, пока не получит его.
Вот что я написал, но программа не работает, потому что пишет что не удаётся преобразовать из out double в out int.
double a, b, c;
double x = 2.5;
double k;
int i;
Console.WriteLine("Введите число a");
if (int.TryParse(Console.ReadLine(), out a))
{
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите число b");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите число c");
c = Convert.ToInt32(Console.ReadLine());
k = a * x + b * x + c * x + (a * x + b * x + c);
}
else
{
Console.WriteLine("Это не число");
}

Console.ReadKey();
Основные ошибки предыдущие отвечающие уже изложили.
Дополню тем что
"При этом если ввести букву, а не число, программа должна сказать, что это не число и просить ввести число бесконечное количество раз, пока не получит его." - эта логика вообще не заиплементирована никак.
Если я правильно понимаю - то бесконечно спрашивать пользователя надо насчет каждой переменной (a, b и c). Удобнее будет эту логику в отдельный метод вынести. Код:

class Program
{
static void Main(string[] args)
{
double a, b, c;
double x = 2.5;
double k;
int i;
a = PromptUntilCorrect(nameof(a));
b = PromptUntilCorrect(nameof(b));
c = PromptUntilCorrect(nameof(c));
k = a * x + b * x + c * x + (a * x + b * x + c);

Console.WriteLine(k);
Console.ReadKey();
}

private static double PromptUntilCorrect(string varName)
{
double userValue;
bool isDouble;
do
{
Console.WriteLine($"Введите число {varName}");
isDouble = double.TryParse(Console.ReadLine(), out userValue);
if (!isDouble)
{
Console.WriteLine("Это не число");
}
}
while (!isDouble);

return userValue;
}
}
Эльдар
Эльдар
5 002
Лучший ответ
Рустам Хадиметов Что значит PromptUntilCorrect и varName и userValue?
Этот код уже помещает число в переменную "а".
double.TryParse(Console.ReadLine(), out a);
Иван Паскаль
Иван Паскаль
88 488
Тип переменной фиксирован, его не нужно проверять. Данные от пользователя всегда приходят в виде строки.
Для преобразования строки в число double надо использовать double.TryParse().
Ввод числа с проверкой и повторным запросом лучше сделать отдельным методом.
Переменную "a" ты зачем-то вводишь дважды.
РГ
Ренат Гареев
36 282

Похожие вопросы