怎么办{..}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();
}
}
如果要立即退出,则需要立即中断。为此,放置以下行
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;
//...
考虑到您将变量value1
和value2
定义为浮动
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;