


В C# не работает кот
Вот код, я пытаюсь сделать чтоб при вводе числа оно сначала проверяло можно ли парсить, выводило это в значение переменной bool и если можно то чтоб парсилось. Это надо чтоб не просто парсить, если так делать и будет введено не число будет ошибка.
using System;
public class ConsoleApp1
{
public static void Main(string[] args) {
Console.WriteLine("Введите первое число");
string firstline = Console.ReadLine();
int firstnum = int.TryParse(firstline, out bool firstnumcanbeparsed);
Console.WriteLine(firstnumcanbeparsed);
switch (firstnumcanbeparsed)
{
case true:
firstnum = int.Parse(firstline);
break;
case false:
Console.WriteLine("Неверный ввод");
break;
}
Console.ReadKey();
}
}
Тут есть несколько проблем и логических ошибок в вашем коде:
int.TryParse() возвращает bool, а не int: Метод TryParse возвращает true, если парсинг прошел успешно, и false в противном случае. Он не возвращает число. Число сохраняется в переменной, переданной через out.
Неверный тип переменной для результата TryParse(): Результат TryParse должен быть сохранен в bool, в вашем коде вы пытаетесь сохранить bool в int. Это вызовет ошибку компиляции.
Неправильное использование switch: switch в данном случае не нужен. Лучше использовать if-else. switch предназначен для сравнения переменной с набором константных значений, а здесь вам нужно просто проверить значение bool.
Неинициализированная переменная firstnum: Если парсинг не удался (firstnumcanbeparsed будет false), то переменная firstnum не будет инициализирована и будет содержать мусор. Лучше инициализировать ее перед использованием.
Исправленный код:
using System;
public class ConsoleApp1
{
public static void Main(string[] args)
{
Console.WriteLine("Введите первое число");
string firstline = Console.ReadLine();
int firstnum = 0; // Инициализируем firstnum
bool firstnumcanbeparsed = int.TryParse(firstline, out firstnum); // Получаем результат TryParse в bool, а число в firstnum
if (firstnumcanbeparsed)
{
Console.WriteLine("Число успешно спаршено: " + firstnum);
}
else
{
Console.WriteLine("Неверный ввод");
}
Console.ReadKey();
}
}
csharp
Объяснение изменений:
int.TryParse(firstline, out firstnum): Мы вызываем TryParse. Результат (успех или неудача) сохраняется в переменной firstnumcanbeparsed (типа bool). Если парсинг удался, в переменную firstnum записывается полученное число.
if (firstnumcanbeparsed): Проверяем, был ли парсинг успешным.
firstnum = 0;: Инициализация firstnum перед использованием. Это хорошая практика, чтобы избежать неопределенного поведения, если парсинг не удастся. В данном случае, если парсинг не удастся, firstnum сохранит свое начальное значение, которое в дальнейшем не используется.
Console.WriteLine("Число успешно спаршено: " + firstnum);: Выводим спарсенное число, если парсинг прошел успешно.
Этот код сначала пытается распарсить введенную строку. Если это удается, выводится сообщение об успехе и число. Если нет, выводится сообщение об ошибке.
Так если парсинг будет неудачным, исключение будет все равно. Не очень понятно, чего именно ты пытаешься добиться, что еще не реализовано.
Ну и использование switch вместо if - это несколько странно.
Заведи собачку, может она сработает.
Коты - они вообще существа ленивые.
Библиотеки на клаву надо