Как мне это написать, чтобы программа перезапускалась после того, как пользователь ввел свое имя

Программа запрашивает имя, и я хочу, чтобы программа спросила после генерации случайного числа, хочет ли пользователь сделать это снова. Если пользователь нажмет Y, программа должна перезапуститься.

 while (true) { 
            Random rnd = new Random();
            int trust = rnd.Next(0, 100);            
            Console.WriteLine("Tell me your name");
            string name = Console.ReadLine();
            Console.WriteLine(name +" " + "is" + " " + trust + " " + "points `enter code here`trustworthy");



            if (trust <= 20)
            {
                Console.WriteLine("gtfo");
            }

            if (trust >= 21 && trust <= 50)
            {
                Console.WriteLine("not gonna tell you anything");
            }

            if (trust >= 50 && trust <= 70)
            {
                Console.WriteLine("not that trustworthy");
            }

            if (trust >= 71 && trust <= 90)
            {
                Console.WriteLine("quite trustworthy");
            }

            if (trust >= 91 && trust <= 100)
            {
                Console.WriteLine(" you are trustworthy");
            }
            Console.ReadKey();
            Console.WriteLine("\nAgain? (y/n)");
            if (Console.ReadLine().ToLower() != "yes")
                    break;
            }

Вы можете попробовать объявить логическое значение (например, bool restart = true;) до в цикле. Вместо while(true) должно быть while(restart != false).

Jaskier 15.03.2019 17:15

в чем проблема с текущим кодом? Кажется, если вы введете «да», цикл должен продолжиться.

Manoj Choudhari 15.03.2019 17:16

@ManojChoudhari, не будет ли break;выход петля while?

Jaskier 15.03.2019 17:17

Если вы хотите продолжить, когда они вводят «y», вам нужно проверить это вместо «да».

juharr 15.03.2019 17:17

Уберите часть «Как вас зовут» из цикла, если вы не хотите спрашивать об этом каждый раз.

Rufus L 15.03.2019 17:18

@Symon Исправьте, он закрывается, если пользователь вводит что-либо, кроме «да».

juharr 15.03.2019 17:18

@Symon - я говорил то же самое. Если пользователь вводит yes, цикл продолжится. В противном случае он сломается. Если эта программа должна продолжать цикл при нажатии y, то должно быть одно условие ИЛИ (||), которое также проверяется с помощью 'y'.

Manoj Choudhari 15.03.2019 17:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
7
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько вещей, которые вы можете исправить в своем коде.

  1. Условие выхода из цикла (где вы вызываете break;) должно быть, если пользователь НЕТ вводит «да» (у вас он прерывается, если они делать вводят «да»).
  2. Если вы хотите запросить имя пользователя только один раз, удалите эту часть из цикла.
  3. Вы должны объявить только один экземпляр Random, а не создавать новый экземпляр на каждой итерации цикла, поэтому мы также можем исключить это из цикла.
  4. Вы можете использовать else if, так как все условия являются эксклюзивными — нет необходимости обрабатывать все остальные условия, если мы столкнемся с true одним из них.
  5. Вы можете использовать интерполяция строк, чтобы сделать выходную строку более читаемой.
  6. Мы можем разрешить пользователю вводить «y» вместо «yes», используя Console.ReadKey

Эти реализованные вещи будут выглядеть примерно так:

Console.WriteLine("Tell me your name");
string name = Console.ReadLine();
Random rnd = new Random();

while (true)
{
    int trust = rnd.Next(0, 100);
    Console.WriteLine($"{name} is {trust} points trustworthy");

    if (trust <= 20) Console.WriteLine("gtfo");
    else if (trust <= 50) Console.WriteLine("not gonna tell you anything");
    else if (trust <= 70) Console.WriteLine("not that trustworthy");
    else if (trust <= 90) Console.WriteLine("quite trustworthy");
    else Console.WriteLine("you are trustworthy");

    Console.WriteLine("\nAgain? (y/n)");

    if (Console.ReadKey().Key != ConsoleKey.Y) break;
}

Другие вопросы по теме