Как я могу убедиться, что определенная строка печатается только тогда, когда оператор if встречается в цикле while - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь напечатать оператор if, но только если значения верны и соответствуют требованиям. Тем не менее, оператор if находится внутри цикла while, и хотя он просит пользователя повторить попытку, если значение в операторе if неверно, он все равно печатает числа, которые пользователь ввел в первый раз в WriteLine, вне if заявление (где написано МОДЕЛИРОВАНИЕ). Я хочу попросить пользователя повторить попытку, пока значения не будут соответствовать требуемому стандарту оператора if.

namespace Woodchuck
{
    class Program
    {
        static void Main(string[] args)
        {
            string restart = "Y";


            while (restart == "Y")
            {
                int totalWoodChucks = 0;
                int days = 0;

                const int MAXDAYS = 10;
                const int MINDAYS = 1;
                const int MAXWOOD = 100;
                const int MINWOOD = 1;


                Write("Enter number of woodchucks for this simulation (1-100): ");
                int.TryParse(ReadLine(), out totalWoodChucks);

                if (totalWoodChucks > MAXWOOD || totalWoodChucks < MINWOOD)
                {
                    WriteLine("Please try again");
                }


                Write("Enter number of days for this simulation (1-10): ");
                int.TryParse(ReadLine(), out days);
                if (days > MAXDAYS || days < MINDAYS)
                {
                    WriteLine("Please try again");
                }


                WriteLine($"SIMULATION 1: {totalWoodChucks} woodchucks over {days} days");

                Write("\nTo run another simulation, enter 'Y':");
                restart = ReadLine().ToUpper();

            }
            //Debug pause
            WriteLine("Press any key to wrap it up...");
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Вы можете сделать это с помощью цикла while, пока не будут выполнены требуемые условия.

Вот простой пример того, как вы могли бы сделать это:

int totalWoodChucks = 0;
int days = 0;

const int MAXDAYS = 10;
const int MINDAYS = 1;
const int MAXWOOD = 100;
const int MINWOOD = 1;

bool validWoodChucks = false;
while(!validWoodChucks)
{
    Console.Write("Enter number of woodchucks for this simulation (1-100): ");
    int.TryParse(Console.ReadLine(), out totalWoodChucks);

    if(totalWoodChucks > MAXWOOD || totalWoodChucks < MINWOOD)
    {
        Console.WriteLine("Invalid woodchucks. Please try again.");
    }
    else
    {
        validWoodChucks = true;
    }

}

bool validDays = false;
while(!validDays)
{
    Console.Write("Enter number of days for this simulation (1-10): ");
    int.TryParse(Console.ReadLine(), out days);
    if (days > MAXDAYS || days < MINDAYS)
    {
        Console.WriteLine("Invalid days. Please try again.");
    }
    else
    {
        validDays = true;
    }
}


Console.WriteLine("Wood chucks: " + totalWoodChucks);
Console.WriteLine("Days: " + days);

Console.ReadLine();

Пример использования:

Enter number of woodchucks for this simulation (1-100): -10
Invalid woodchucks. Please try again.
Enter number of woodchucks for this simulation (1-100): 50
Enter number of days for this simulation (1-10): 20
Invalid days. Please try again.
Enter number of days for this simulation (1-10): 10
Wood chucks: 50
Days: 10
0 голосов
/ 27 мая 2019

string restart = "Y";

    while(restart == "Y")
    {
        int totalWoodChucks = 0;
        int days = 0;

        const int MAXDAYS = 10;
        const int MINDAYS = 1;
        const int MAXWOOD = 100;
        const int MINWOOD = 1;


        Write("Enter number of woodchucks for this simulation (1-100): ");
        int.TryParse(ReadLine(), out totalWoodChucks);
        Write("Enter number of days for this simulation (1-10): ");
        int.TryParse(ReadLine(), out days);

        if((totalWoodChucks > MAXWOOD || totalWoodChucks < MINWOOD) &&(days > MAXDAYS || days < MINDAYS))
        {
            WriteLine("Please try again");
            continue;
        }

        WriteLine($"SIMULATION 1: {totalWoodChucks} woodchucks over {days} days");

        Write("\nTo run another simulation, enter 'Y':"); 
        restart = ReadLine().ToUpper();

    }
    //Debug pause
    WriteLine("Press any key to wrap it up...");

Я сделал проверку после того, как все данные были собраны. затем, если данные не соответствуют требованиям, они будут запрашивать еще раз, пока данные не будут удовлетворены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...