do {...} while()循环如何工作?

时间:2014-09-21 08:19:42

标签: c#

这是我使用c#在vs2013中的简单计算器代码,它应该做的是当程序小时如果我按Q它应该退出但它继续进行即使我输入Q什么方法错误

 class Program
    {
        public static void Main(string[] args)
        {   
            float value1, value2, result= 0; 
            char op , cont;
            Console.WriteLine("Simple Calculator"); 
        do {
               Console.WriteLine("Please enter Q to Quit or continue  "); 
                cont = Convert.ToChar(Console.ReadLine().ToUpper());
                Console.WriteLine("Please enter First value  ");
                value1 = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Please enter Second value  ");
                value2 = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Please enter  operator   ");
                op = Convert.ToChar(Console.ReadLine());
                if (op == '+')
                {
                    result = value1 + value2;
                    Console.WriteLine("Result is : {0}", result);
                }

          }     
        while(cont!='Q');
        Console.ReadKey();
        }
    }

5 个答案:

答案 0 :(得分:2)

如果您想立即退出,需要立即解决。为此,提出以下一行

if (cont == 'Q')
    break;

在你的代码之后,

Console.WriteLine("Please enter Q to Quit or continue  "); 
cont = Convert.ToChar(Console.ReadLine().ToUpper());

答案 1 :(得分:1)

您可以编写一个在条件下中断的无限循环:

while (true)
{
  Console.WriteLine("Please enter Q to Quit or continue  ");
  cont = Convert.ToChar(Console.ReadLine().ToUpper());
  if (cont == 'Q') break;
  Console.WriteLine("Please enter First value  ");
  value1 = Convert.ToInt32(Console.ReadLine());
  Console.WriteLine("Please enter Second value  ");
  value2 = Convert.ToInt32(Console.ReadLine());
  Console.WriteLine("Please enter  operator   ");
  op = Convert.ToChar(Console.ReadLine());
  if (op == '+')
  {
    result = value1 + value2;
    Console.WriteLine("Result is : {0}", result);
  }
}

答案 2 :(得分:0)

您可以通过阅读完整的一行(作为字符串)并尽早返回来解决此问题。作为第一个角色。

之后,您可以从字符串中检索字符。

答案 3 :(得分:0)

一次性do-while循环,无论条件如何!!!!
因此,对于退出,在将值读入cont

后立即添加一个附加条件

答案 4 :(得分:0)

首先是WriteLine调用中的短语

Console.WriteLine("Please enter Q to Quit or continue  "); 

非常混乱。例如,我不明白我应该输入什么来继续计算。

其次,即使用户输入“Q”,您也会通过循环。

至少你必须在输入时检查变量cont,如果它等于'Q'则退出循环。例如

while ( true )
{
    Console.WriteLine("Please enter Q to Quit or continue  "); 
    cont = Convert.ToChar(Console.ReadLine().ToUpper());

    if ( cont == 'Q' ) break;

    //...

考虑到您将变量value1value2定义为浮点数

float value1, value2, result= 0;

但允许仅输入整数值。例如

value1 = Convert.ToInt32(Console.ReadLine());

我会按以下方式编写循环

while ( true )
{
    Console.WriteLine( "Please enter an operator ( +, -, *, / ) or Q to quit: " );   
    op = Convert.ToChar(Console.ReadLine().ToUpper());

    if ( op == 'Q' ) break;