怎么办{..}while()循环工作

本文关键字:循环 工作 while 怎么办 | 更新日期: 2023-09-27 18:23:42

这是我在vs2013中使用c#的简单计算器代码,它应该做的是当程序小伙子们时,如果我按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();
        }
    }

怎么办{..}while()循环工作

如果要立即退出,则需要立即中断。为此,放置以下行

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

您可以通过读取完整的一行(作为字符串)并提前返回'Q'作为第一个字符来解决此问题。

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

无论条件如何,do-while都会循环一次
因此,对于退出,在将值读取到cont 之后立即设置一个附加条件

首先,这个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;