@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)?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
@cicatrix
было бы большой ошибкой думать
Вместо Convert.ToDouble ипсользуй Double.TryParse
Он вернёт false, если не удалось преобразование.
Как-то так:
double x1;
do
{
   Console.Write("Введите x1: ");
} while (!double.TryParse(Console.ReadLine(), out x1))

P.S. Имей в виду, что успех или неуспех преобразования ещё зависит от принятого в локали системы разделителя целой и дробной части (точка или запятая). Но это уже отдельный геморрой.
Ответ написан
@vabka Куратор тега C#
Токсичный
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.

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

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

Войти через центр авторизации
Похожие вопросы