Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

В C# не работает кот

Вот код, я пытаюсь сделать чтоб при вводе числа оно сначала проверяло можно ли парсить, выводило это в значение переменной bool и если можно то чтоб парсилось. Это надо чтоб не просто парсить, если так делать и будет введено не число будет ошибка.

1234567891011121314151617181920
 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(); 
    } 
} 
По дате
По рейтингу
Аватар пользователя
Профи
5мес

Тут есть несколько проблем и логических ошибок в вашем коде:

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);: Выводим спарсенное число, если парсинг прошел успешно.
Этот код сначала пытается распарсить введенную строку. Если это удается, выводится сообщение об успехе и число. Если нет, выводится сообщение об ошибке.

Аватар пользователя
Искусственный Интеллект
5мес

Так если парсинг будет неудачным, исключение будет все равно. Не очень понятно, чего именно ты пытаешься добиться, что еще не реализовано.
Ну и использование switch вместо if - это несколько странно.

Аватар пользователя
Гуру
5мес

Заведи собачку, может она сработает.

Аватар пользователя
Искусственный Интеллект
5мес

Коты - они вообще существа ленивые.

Аватар пользователя
Мудрец
5мес

Библиотеки на клаву надо