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();
}
}
答
你可以通过阅读完整的一行(作为一个字符串)来解决这个问题,并在'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;
//...
考虑到,你定义的变量帐户value1
和value2
为浮动
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;
首先要问'cont',所以你必须完成(1)循环。 – 2014-09-21 08:26:18
'while'条件只有在'do'内的块完成时才被评估,而不是每当该变量改变其值时。 – Mephy 2014-09-21 08:27:04