@Skrillex3594

Как в C Sharp выдавать ошибку при неправильном вводе?

Я нубик в си шарп (ну это пока).

static void Main(string[] args)
{
Console.WriteLine("Введите первое число!");
double x = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Введите второе число!");
double x1 = Convert.ToDouble(Console.ReadLine());

if (x < x1)
{
Console.WriteLine($"Число {x1} больше {x}");
}
if (x > x1)
{
Console.WriteLine($"Число {x} больше {x1}");
}
if (x == x1)
{
Console.WriteLine($"числа {x} и {x1} равны!");
}
}

Когда вводишь 2 числа, то он их сравнивает где больше, а где меньше. А вот мне надо когда вводишь букву или другой не понятный символ, консоль выводила: неправильный ввод (или другую фразу).
Это раз. Два. Можно ли создать такую программку используя метод свитч (switch)?
  • Вопрос задан
  • 2513 просмотров
Решения вопроса 2
@cicatrix
было бы большой ошибкой думать
Вместо Convert.ToDouble ипсользуй Double.TryParse
Он вернёт false, если не удалось преобразование.
Как-то так:
double x1;
do
{
   Console.Write("Введите x1: ");
} while (!double.TryParse(Console.ReadLine(), out x1))

P.S. Имей в виду, что успех или неуспех преобразования ещё зависит от принятого в локали системы разделителя целой и дробной части (точка или запятая). Но это уже отдельный геморрой.
Ответ написан
1.
double x1;
Console.Write("Введите x1: ");
if(!double.TryParse(Console.ReadLine(), out x1)) {
  do {
     Console.WriteLine("неправильный ввод");
     Console.Write("введите x1: ");
  } while(!double.TryParse(Console.ReadLine(), out x1));
}

2.
var msg = x.Compare(x1) switch {
  -1 => $"{x} < {x1}",
   0 => $"{x} = {x1}",
  +1 => $"{x} > {x1}"
};
Console.WriteLine(msg);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Вам нужен TryParse вместо Convert.

Свитчи тут не очень подойдут - они про конкретные значения только. Хотя можно конечно получить конкретные значения, но это уже математический вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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