当条件不为真时循环不循环C#

时间:2014-12-29 01:15:42

标签: c#

我正在编写一个C#控制台程序作为我的任务的一部分。我在这里尝试做的是每次用户输入无效内容时显示消息。但是,当我在做出正确选择后输入无效内容时,它只会显示一次错误消息。在消息之后,我进行了有效选择,然后是无效选择,它退出控制台。我还希望它在用户输入有效数字时显示正确的消息,但在进行无效选择后不会连续发生。它只是退出控制台......我尝试使用“||”而不是“&&”这根本不起作用。

我是编程的绝对初学者,所以如果有什么我做错了请帮助我。

Console.WriteLine("Enter 1, 2, 3, OR 4");
        uI = int.Parse(Console.ReadLine());

        while (uI != 1 && uI != 2 && uI != 3 && uI != 4)
        {
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            uI = int.Parse(Console.ReadLine());
        }
        if (uI == 1)
        {
            Console.WriteLine("msg");
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            uI = int.Parse(Console.ReadLine());
        }
        if (uI == 2)
        {
            Console.WriteLine("msgg");
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            uI = int.Parse(Console.ReadLine());
        }
        if (uI == 3)
        {
            Console.WriteLine("msggg");
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            uI = int.Parse(Console.ReadLine());
        }
        if (uI == 4)
        {
            Console.WriteLine("msgggg");
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            uI = int.Parse(Console.ReadLine());
        }

谢谢

3 个答案:

答案 0 :(得分:0)

您需要一个不定式循环。此外,我使用更易读的开关盒:

Console.WriteLine( "Enter 1, 2, 3, OR 4" );

while( true ) {
   uI = int.Parse( Console.ReadLine( ) );

   string message = "Error";
   switch( uI ) {
      case 1: message = "msg"; break;
      case 2: message = "msgg"; break;
      case 3: message = "msggg"; break;
      case 4: message = "msgggg"; break;
      default: break;
   }

   Console.WriteLine( message );      
   Console.WriteLine( "SELECT 1, 2, 3, OR 4" );
}

答案 1 :(得分:0)

试试这个:

class Program
{
    static void Main(string[] args)
    {
        do
        {
            Console.WriteLine("SELECT 1, 2, 3, OR 4");
            var uI=int.Parse(Console.ReadLine());
            if (uI==1)
            {
                Console.WriteLine("msg");
            } else if (uI==2)
            {
                Console.WriteLine("msgg");
            }
            else if (uI==3)
            {
                Console.WriteLine("msggg");
            }
            else if (uI==4)
            {
                Console.WriteLine("msgggg");
            }
            else
            {
                break;
            }
        } while (true);
    }
}

所以程序接受输入并对其进行操作,除非它不是1,2,3或4,它存在带有break;语句的循环。

答案 2 :(得分:0)

        Console.WriteLine("Enter 1, 2, 3, OR 4");
        uI = int.Parse(Console.ReadLine());
        while(uI > 0) //exit loop if 0 is entered
        {
           switch(uI)
           {
              case 1: Console.WriteLine("msg"); break;
              case 2: Console.WriteLine("msgg"); break;
              case 3: Console.WriteLine("msggg"); break;
              case 4: Console.WriteLine("msgggg"); break;
              default: break; //do not write to console just loop again

           }
           Console.WriteLine("Enter 1, 2, 3, OR 4");
           uI = int.Parse(Console.ReadLine());
        }