如何询问直到用户在 C# 中得到具体答复

How to ask until the user get specific reply in C#

        {   
            bool stayInLoop = true;

            while(stayInLoop)
            {
                Console.WriteLine("Enter Yor Number");
                var PlusA = Console.ReadLine();
                Console.WriteLine("Enter Yor Number");
                var PlusB = Console.ReadLine();
                if(PlusA == ';')
                {
                    stayInLoop = false;
                    break;
                }
                else if(PlusB == ';')
                {
                    stayInLoop = false;
                    break;
                }
                else
                {
                    Console.WriteLine("Answer =");
                    Console.WriteLine(PlusA + PlusB);
                }
            }
        }

我想做一个加号计算器,我想让用户输入超过 2 个数字,不断询问 PlusC、PlusD,直到他们输入符号 ;

例如,PlusA PlusB PlusC 和 PlusD 中的用户编号,he/she 输入 ; 所以它应该打印 PlusA + PlusB + PlusC

如果他在PlusD中输入一个数字,它应该要求PlusE,直到he/she输入;,它应该总结之前的所有数字

而且我想自动执行该过程,程序将要求 PlusA 到 PlusZ 本身而不是 int 我自己的,该怎么做? (我知道我没有说清楚,因为我找不到更好的词)

您要查找的是 while() 循环。

示例:

bool stayInLoop = true;

while(stayInLoop) // basically means (stayInLoop == true)
{
  var text = Console.ReadLine();
  if(text == ';')
  {
   stayInLoop = false;
   break; // break will stop the loop, but you can also change the variable to false to break the loop.
  }
} 

您想在用户输入 ; 之前添加数字。你应该为此使用循环。这是使用 for 循环的完整解决方案:

  switch(exp) 
  {
    case "+":
    {
      var sum = 0;
      for(;;) 
      {
         Console.WriteLine("Enter Yor Number");
         var line = Console.ReadLine();
         if (line == ";") break;
         sum += Convert.ToInt32(line);
      }
      Console.WriteLine(sum);
      break;
    }
  }

这里我们一遍又一遍地重复循环中的部分,将输入的数字累加到 sum 变量中,直到用户输入 ; - 那是我们用 break 结束循环的时候。

使用 while 循环:

switch(exp) 
{
      case "+":
           int sum = 0;
           string input = "";
           do
           {
               Console.WriteLine("Enter your number:");
               input = Console.ReadLine();
               if (input != ";")
                  sum += int.Parse(input);

           } while (input != ";");

           Console.WriteLine("Answer =" + sum);
           break;
}

您遇到问题是因为您应该使用 while statement.

迭代代码直到满足您的 exit/end 条件
switch(exp)
{
    case "+":
       int mySum = 0;
       string userInput = "";
       while(userInput != ";")
       {
           Console.WriteLine("Enter number to add (';' to end the sum):");
           userInput = Console.ReadLine();
           if (userInput != ";")
           {
              // Would be interesting checking if entered really is an integer, for example Int32.TyParse()
              mySum = mySum + Convert.ToInt32(userInput);
           }
       }
       Console.WriteLine("Answer =" + mySum.ToString());
       break;
}

谢谢您的回复,但是有什么方法可以自动执行该过程,该程序将要求 PlusA 到 PlusZ 本身而不是我自己的

            bool stayInLoop = true;

            while(stayInLoop)
            Console.WriteLine("Enter Yor Number");
            var PlusA = Console.ReadLine();
            Console.WriteLine("Enter Yor Number");
            var PlusB = Console.ReadLine();
            if(PlusA == ';')
            {
                stayInLoop = false;
                break;
            }
            else if(PlusB == ';')
            {
                stayInLoop = false;
                break;
            }
            else
            {
                Console.WriteLine("Answer =");
                Console.WriteLine(PlusA + PlusB);
            }
        } 

当我 运行 这个时,它 运行 出 'error CS0019' 和 'error CS0139'