我如何确保仅在while循环中遇到if语句时才打印特定行

时间:2019-05-27 04:52:54

标签: c# if-statement while-loop

我试图打印一条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 :(得分:0)

您可以通过使用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

答案 1 :(得分:-1)

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...");

我所做的是在收集所有数据之后进行检查。然后,如果数据不符合要求,它将再次请求再次尝试,直到满足数据为止。