Что именно заставляет мой основной метод работать бесконечно, когда вместо этого я хочу, чтобы он запускал мой метод постепенно, основываясь на ответе пользователя? - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь написать программу для начинающих, в которой я бросаю 2 кубика, и он проверяет кубики, если есть какие-либо четности, он скажет «четнее лучше, чем шансы», и если есть сценарий, в котором есть только шансы, он будетскажем, «шансы все еще хороши», и после каждого броска он будет спрашивать пользователя, хотят ли они играть снова, если нет, он будет сообщать пользователю, сколько раз он бросил кубик. Когда я запускаю программу, она запускается и спрашивает пользователя, хотят ли они снова выполнить откат, когда я набираю «ДА», она запускается бесконечно. Я не знаю, связана ли проблема с тем, как написан мой метод main, или с методом TinasDice.

Я пытался использовать только оператор if / else в методе main, гдепользовательский ввод проверен, но он сразу выходит из программы.

            TinasDice();

            Console.WriteLine("Do you want to play again?");
            string answer;
            int counter = 0;
            answer = Console.ReadLine();

            while (answer == "YES")
            {

                if (answer == "YES")
                {
                    TinasDice();
                }
                else
                {
                    Console.WriteLine("The number of times the dice was die was thrown is: " + counter);
                    Console.WriteLine("Nice game!");
                    Console.WriteLine("Thanks for playing. Come play again soon!");
                }

            }
        }
                public static void TinasDice()
                {
                Random random = new Random();

                int dice1 = new int();
                int dice2 = new int();

                dice1 = random.Next(1, 6);
                dice2 = random.Next(1, 6);

                Console.WriteLine("Hey Welcome to Tina's Dice Game.");
                Console.WriteLine("Let's start!");

                if (dice1 % 2 == 0 || dice2 % 2 == 0)
                {
                    Console.WriteLine("I got  " + dice1 + " and " + dice2);
                    Console.WriteLine("Evens are better then odds!");

                }
                else   
                {
                    Console.WriteLine("I got a " + dice1 + " and " + dice2);
                    Console.WriteLine("Odds ares still cool!");                      
                }      

Я просто пытаюсь заставить программу запускаться постепенно после первого запуска TinasDice, поэтому, когда пользовательнапечатав «ДА», он запустит TinasDice один раз, а затем снова запросит пользователя, пока пользователь не введет что-то другое, кроме «ДА».

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Вы можете попробовать это:

int counter = 1;
TinasDice();
bool playAgain = false;
do
{
  Console.WriteLine("Do you want to play again?");
  playAgain = Console.ReadLine().ToLower() == "yes";
  if ( playAgain )
  {
    counter++;
    TinasDice();
  }
}
while ( playAgain );
Console.WriteLine("The number of times the dice was die was thrown is: " + counter);
Console.WriteLine("Nice game!");
Console.WriteLine("Thanks for playing. Come play again soon!");
0 голосов
/ 06 октября 2019

Принимая ваш пример сверху.

   TinasDice();

        Console.WriteLine("Do you want to play again?");
        string answer = "YES";
        int counter = 0;


        while (answer == "YES")
        {
            answer = Console.ReadLine();
            counter++;
            if (answer == "YES")
            {
                TinasDice();
            }
            else
            {
                Console.WriteLine("The number of times the dice was die was thrown is: " + counter);
                Console.WriteLine("Nice game!");
                Console.WriteLine("Thanks for playing. Come play again soon!");
                break;
            }

        }
    }

Обратите внимание на значения по умолчанию "YES" и break

...