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

问题描述:

这是vs2013我简单的计算器代码使用C#,什么是应该做的是,当程序小伙子们,如果我按Q应该戒烟,但它继续进行,即使我输入q什么是错用方法do {...} while()循环是如何工作的?

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(); 
     } 
    } 
+1

首先要问'cont',所以你必须完成(1)循环。 – 2014-09-21 08:26:18

+2

'while'条件只有在'do'内的块完成时才被评估,而不是每当该变量改变其值时。 – Mephy 2014-09-21 08:27:04

你可以通过阅读完整的一行(作为一个字符串)来解决这个问题,并在'Q'上作为第一个字符返回。

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

+0

他已经这么做了。 – 2014-09-21 16:47:05

如果你想立即退出,你需要立刻打破。对于把下面的行

if (cont == 'Q') 
    break; 

你的代码后,

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

你可以写一个无限循环的条件打破:

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); 
    } 
} 

一个做而对于一个循环时间与条件无关!
所以对于退出,把一个附加条件读取值成续

首先短语在此的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; 

,但允许只输入整数valies.For例如

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;