有没有办法制作具有多个条件的循环? C#

时间:2016-09-27 22:24:05

标签: c#

我制作了一个简单的程序,询问用户的姓名,然后是1或2的数字,然后将他们的姓名和号码写入控制台。

我遇到的问题是我不知道如何制作它以便用户只能在一个循环中输入数字1或2(我假设有一些明显的东西我不见了)。

代码:

        string strName;
        string strNumber;
        int intNumber;

        Console.WriteLine("What is your name?");
        strName = Console.ReadLine();        

        Console.WriteLine("Please enter a number (1 or 2)");
        strNumber = Console.ReadLine();
       bool test = int.TryParse(strNumber, out intNumber);

         while (intNumber >2)

        {
            Console.WriteLine("Please enter a number (1 or 2)");
            strNumber = Console.ReadLine();
            int.TryParse(strNumber, out intNumber);
        }
        while (intNumber < 1)

        {
            Console.WriteLine("Please enter a number (1 or 2)");
            strNumber = Console.ReadLine();
            int.TryParse(strNumber, out intNumber);
        }
        while (test == false)

        {
            Console.WriteLine("Please enter a number (1 or 2)");
            strNumber = Console.ReadLine();
            int.TryParse(strNumber, out intNumber);
        }


        Console.WriteLine("Welcome, your name is "+ strName+ " your number is " + intNumber);
        Console.ReadKey();

从上面的代码中可以看出,我有3个单独的循环,这会产生一个问题,因为它们从上到下运行,一旦它们被传递,它们就不再循环,所以用户可以输入:10,f然后7,程序就可以了。

如果还有另一种更简单的做法,我可以告诉你。

-Thanks

4 个答案:

答案 0 :(得分:2)

你是说这样的意思吗?

int response = 0;

while (response != 1 && response != 2)
{
    Console.WriteLine("Please enter a number (1 or 2)");
    var strNumber = Console.ReadLine();
    int intNumber;
    if (int.TryParse(strNumber.Trim(), out intNumber))
    {
        response = intNumber;
    }
}

答案 1 :(得分:1)

你可以将所有这些结合起来......

while (intNumber < 1 || intNumber > 2 || ...)
{
}

答案 2 :(得分:0)

您可以为循环添加任意数量的条件。我不确定我有什么逻辑你应该实现希望这会有所帮助:

        string nameStr = String.Empty;
        string numberStr = String.Empty;
        int parsedNumber = 0;
        bool continueLoop = true;
        bool isParsed = true;

        do
        {
            try
            {
                Console.WriteLine("What is your name?");
                nameStr = Console.ReadLine();

                Console.WriteLine("Please enter a number (1 or 2)");
                numberStr = Console.ReadLine();
                isParsed = int.TryParse(numberStr, out parsedNumber);
                if (parsedNumber > 2)
                {
                    ///todo: Implement your Logic here!
                }
                else if (parsedNumber < 1)
                {
                    ///todo: Implement your Logic here!
                }
                else
                {
                    ///todo: Implement your Logic here!                        
                }
            }
            catch (Exception)
            {
                continueLoop = false;
            }
        } while (isParsed && continueLoop);

答案 3 :(得分:0)

如果您希望使用具有多个条件的FOR loop,则下面是一个示例

for(int i=0,j=0;i<5&& j>-5;i++,j--){
//Do something
}