2014-09-21 81 views
0

這是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

回答

0

你可以通過閱讀完整的一行(作爲一個字符串)來解決這個問題,並在'Q'上作爲第一個字符返回。

之後,您可以檢索字符串中的字符。

+0

他已經這麼做了。 – 2014-09-21 16:47:05

2

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

if (cont == 'Q') 
    break; 

你的代碼後,

Console.WriteLine("Please enter Q to Quit or continue "); 
cont = Convert.ToChar(Console.ReadLine().ToUpper()); 
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); 
    } 
} 
0

一個做而對於一個循環時間與條件無關!
所以對於退出,把一個附加條件讀取值成續

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; 

,但允許只輸入整數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;