System.FormatException: "Input string was not in a correct format."

150
12 февраля 2022, 01:40

Проблема возникает при компиляции . У меня 3 действия, если пользователь ввёл не число, а буквы, то программа должна выводить "Пожалуйста, выбирайте разделы из списка". Строка выделенная звёздочками - строка в которой возникла ошибка.

    using System;
    using System.Collections.Generic;
namespace Гипер_инстремент
{
    class Program
    {
        class Anekdots
        {
            readonly List<string> _anekdotlist = new List<string>();
            public void Anekdot()
            {
                _anekdotlist.Add("Новый год — это повод встретиться со всеми родственниками и вспомнить, почему конкретно вы живёте отдельно");
                _anekdotlist.Add("Свой первый срок по малолетке я отбывал в углу.");
                _anekdotlist.Add("В 2 часа ночи во мне просыпается философ, в 3 часа – мечтатель, а в 7 часов – невыспавшийся человек.");
                _anekdotlist.Add("Артисты на Голубом огоньке делятся на 2 категории: это вообще кто ? -и он еще жив ?");
                _anekdotlist.Add("Свою любовь к роскоши патриарх Кирилл объясняет просто: Кто - то же должен жить в райских условиях, чтобы доходчивее рассказывать пастве о том, как хорошо в раю.");
                _anekdotlist.Add("Дом мужчины - его крепость, но только снаружи. Внутри это, чаще всего, детская комната.");
                _anekdotlist.Add("Джентльмен поймет и простит хама. Он скажет: *Меня не обижает, что вы обо мне плохо думаете, ведь думать у вас всегда плохо получается*.");
                _anekdotlist.Add("Трамп отказался выводить войска из Ирака, пока Багдад не выплатит миллиарды долларов, потраченные на вторжение американских войск в Ирак.");
                _anekdotlist.Add("В жизни голожопого мужчины очень мало голозадых женщин.");
                _anekdotlist.Add("Доктор, в последнее время овечки выстраиваются в кольцо и ходят по кругу. Я страшно не высыпаюсь!");
                _anekdotlist.Add("Зрелость наступает, когда наигрался во все игрушки и понял, что нет ничего лучше, чем самому создавать новые.");
                _anekdotlist.Add("Одиночество - это когда ты слышишь, как приходят сообщения на телефон... у соседей.");
                _anekdotlist.Add("У нас огромные урожаи хлеба в сельском хозяйстве, а все хлебные места почему-то в Газпроме");
                _anekdotlist.Add("Даже вступая в борьбу за новые идеи можно снова наступать на старые грабли.");
                Random rnd1 = new Random();
                int rn1 = rnd1.Next(0, _anekdotlist.Count - 1);
                Console.WriteLine(_anekdotlist[rn1]);
            }

        }

        static void Main(string[] args)
        {
        Label:
            Console.WriteLine("************");
            Console.WriteLine("Что вы хотите ?");
            Console.WriteLine("Писать только цифрами");
            Console.WriteLine("1.Анекдот");
            Console.WriteLine("2.Калькулятор");
            Console.WriteLine("3.Загадки");
            Console.WriteLine("************");
            **int nym1 = Convert.ToInt32(Console.ReadLine());**
            try { 
            switch (nym1)
            {
                case 1:
                    Anekdots p1 = new Anekdots();
                    p1.Anekdot();
                    break;

                case 2:

                    string name;
                    Console.WriteLine("Выберете действие");
                    Console.WriteLine("1.Сложение");
                    Console.WriteLine("2.Вычитание");
                    Console.WriteLine("3.Умножение");
                    Console.WriteLine("4.Деление");
                    Console.WriteLine("Писать цифры!");
                    name = Console.ReadLine();
                    int name1 = Convert.ToInt32(name);
                    switch (name1)
                    {
                        case 1:
                            Console.WriteLine("Введите первое число");
                            int numc1 = Convert.ToInt32(Console.ReadLine());
                            Console.WriteLine("Введите второе число");
                            int numc2 = Convert.ToInt32(Console.ReadLine());
                            int c = numc1 + numc2;
                            Console.WriteLine("Вы получили число {0}", c);
                            break;
                        case 2:
                            Console.WriteLine("Введите первое число");
                            int numv1 = Convert.ToInt32(Console.ReadLine());
                            Console.WriteLine("Введите второе число");
                            int numv2 = Convert.ToInt32(Console.ReadLine());
                            int p = numv1 - numv2;
                            Console.WriteLine("Вы получили число {0}", p);
                            break;
                        case 3:
                            Console.WriteLine("Введите первое число");
                            int numy1 = Convert.ToInt32(Console.ReadLine());
                            Console.WriteLine("Введите второе число");
                            int numy2 = Convert.ToInt32(Console.ReadLine());
                            int pr = numy1 * numy2;
                            Console.WriteLine("Вы получили число {0}", pr);
                            break;
                        case 4:
                            Console.WriteLine("Введите первое число");
                            int numd1 = Convert.ToInt32(Console.ReadLine());
                            Console.WriteLine("Введите второе число");
                            int numd2 = Convert.ToInt32(Console.ReadLine());
                            int th = numd1 / numd2;
                            Console.WriteLine("Вы получили число {0}", th);
                            break;
                        default:
                            Console.WriteLine("Простите, похоже произошли системные неполадки");
                            break;
                    }
                    break;
                    case 3:
                        Console.WriteLine("Этот раздел ещё не сделан");
                        break;
                    default:
                        Console.WriteLine("Пожалуйста, выбирайте разделы из списка");
                        break;
            }
            goto Label;
        }
        catch (Exception ex){
            Console.WriteLine("Тут ошибочка");
            }
        }
    }
}
Answer 1

Ошибка возникает из-за того, что вы пытаетесь string конвертнуть в int Используйте int.TryParse и забудьте о goto

using System;
using System.Collections.Generic;
namespace Гипер_инстремент
{
    class Program
    {
        class Anekdots
        {
            readonly List<string> _anekdotlist = new List<string>();
            public void Anekdot()
            {
                _anekdotlist.Add("Новый год — это повод встретиться со всеми родственниками и вспомнить, почему конкретно вы живёте отдельно");
                _anekdotlist.Add("Свой первый срок по малолетке я отбывал в углу.");
                _anekdotlist.Add("В 2 часа ночи во мне просыпается философ, в 3 часа – мечтатель, а в 7 часов – невыспавшийся человек.");
                _anekdotlist.Add("Артисты на Голубом огоньке делятся на 2 категории: это вообще кто ? -и он еще жив ?");
                _anekdotlist.Add("Свою любовь к роскоши патриарх Кирилл объясняет просто: Кто - то же должен жить в райских условиях, чтобы доходчивее рассказывать пастве о том, как хорошо в раю.");
                _anekdotlist.Add("Дом мужчины - его крепость, но только снаружи. Внутри это, чаще всего, детская комната.");
                _anekdotlist.Add("Джентльмен поймет и простит хама. Он скажет: *Меня не обижает, что вы обо мне плохо думаете, ведь думать у вас всегда плохо получается*.");
                _anekdotlist.Add("Трамп отказался выводить войска из Ирака, пока Багдад не выплатит миллиарды долларов, потраченные на вторжение американских войск в Ирак.");
                _anekdotlist.Add("В жизни голожопого мужчины очень мало голозадых женщин.");
                _anekdotlist.Add("Доктор, в последнее время овечки выстраиваются в кольцо и ходят по кругу. Я страшно не высыпаюсь!");
                _anekdotlist.Add("Зрелость наступает, когда наигрался во все игрушки и понял, что нет ничего лучше, чем самому создавать новые.");
                _anekdotlist.Add("Одиночество - это когда ты слышишь, как приходят сообщения на телефон... у соседей.");
                _anekdotlist.Add("У нас огромные урожаи хлеба в сельском хозяйстве, а все хлебные места почему-то в Газпроме");
                _anekdotlist.Add("Даже вступая в борьбу за новые идеи можно снова наступать на старые грабли.");
                Random rnd1 = new Random();
                int rn1 = rnd1.Next(0, _anekdotlist.Count - 1);
                Console.WriteLine(_anekdotlist[rn1]);
            }

        }

        static void Main(string[] args)
        {
            while (true)
            {
                int nym1;
                while (true)
                {
                    Console.WriteLine("************");
                    Console.WriteLine("Что вы хотите ?");
                    Console.WriteLine("Писать только цифрами");
                    Console.WriteLine("1.Анекдот");
                    Console.WriteLine("2.Калькулятор");
                    Console.WriteLine("3.Загадки");
                    Console.WriteLine("************");
                    if (int.TryParse(Console.ReadLine(), out nym1))
                    {
                        break;
                    }
                    Console.WriteLine("Пожалуйста, выбирайте разделы из списка");
                }
                try
                {
                    switch (nym1)
                    {
                        case 1:
                            Anekdots p1 = new Anekdots();
                            p1.Anekdot();
                            break;
                        case 2:
                            string name;
                            Console.WriteLine("Выберете действие");
                            Console.WriteLine("1.Сложение");
                            Console.WriteLine("2.Вычитание");
                            Console.WriteLine("3.Умножение");
                            Console.WriteLine("4.Деление");
                            Console.WriteLine("Писать цифры!");
                            name = Console.ReadLine();
                            int name1 = Convert.ToInt32(name);
                            switch (name1)
                            {
                                case 1:
                                    Console.WriteLine("Введите первое число");
                                    int numc1 = Convert.ToInt32(Console.ReadLine());
                                    Console.WriteLine("Введите второе число");
                                    int numc2 = Convert.ToInt32(Console.ReadLine());
                                    int c = numc1 + numc2;
                                    Console.WriteLine("Вы получили число {0}", c);
                                    break;
                                case 2:
                                    Console.WriteLine("Введите первое число");
                                    int numv1 = Convert.ToInt32(Console.ReadLine());
                                    Console.WriteLine("Введите второе число");
                                    int numv2 = Convert.ToInt32(Console.ReadLine());
                                    int p = numv1 - numv2;
                                    Console.WriteLine("Вы получили число {0}", p);
                                    break;
                                case 3:
                                    Console.WriteLine("Введите первое число");
                                    int numy1 = Convert.ToInt32(Console.ReadLine());
                                    Console.WriteLine("Введите второе число");
                                    int numy2 = Convert.ToInt32(Console.ReadLine());
                                    int pr = numy1 * numy2;
                                    Console.WriteLine("Вы получили число {0}", pr);
                                    break;
                                case 4:
                                    Console.WriteLine("Введите первое число");
                                    int numd1 = Convert.ToInt32(Console.ReadLine());
                                    Console.WriteLine("Введите второе число");
                                    int numd2 = Convert.ToInt32(Console.ReadLine());
                                    int th = numd1 / numd2;
                                    Console.WriteLine("Вы получили число {0}", th);
                                    break;
                                default:
                                    Console.WriteLine("Простите, похоже произошли системные неполадки");
                                    break;
                            }
                            break;
                        case 3:
                            Console.WriteLine("Этот раздел ещё не сделан");
                            break;
                        default:
                            Console.WriteLine("Пожалуйста, выбирайте разделы из списка");
                            break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Тут ошибочка");
                    break;
                }
            }
        }
    }
}
READ ALSO
Возвращение значения переменной C#

Возвращение значения переменной C#

Доброго времени сутокУ меня есть такой скрипт управления объектом и есть скрипт коллизии

102
Как работают лямбда-функции?

Как работают лямбда-функции?

Пытаюсь разобраться в том, как работают лямбда-функции и увидел на метаните, как он проделывает следующее:

103
Как получить связанные сущности в одной в Entity Framework Core?

Как получить связанные сущности в одной в Entity Framework Core?

только знакомлюсь с EF Core, так что не судите строгоВообщем, у меня есть такая простенькая схема моего кластера

111
Xamarin чтение внедренного текстового файла

Xamarin чтение внедренного текстового файла

Есть коллекция в текстовом файлеПрикрепил её к приложению и пытаюсь прочитать

131