c#if语句在while循环中如果用户输入有效数据则如何突破

时间:2014-07-23 12:25:01

标签: c# while-loop break

我想知道在if语句括号中放入什么来告诉程序,如果x或y等于double,它可以突破并继续执行我的其余代码。

有什么建议吗?

while (true)
{                    
    Console.Write("I need to pour this much from this one: ");

    string thisOne = Console.ReadLine();
    Double.TryParse(thisOne, out x);

    if ( /* Here I want to put "x is a number/double*/ )
    {
        break;
    }

}

while (true)
{
    Console.Write("I need to pour this much from that one: ");

    string thatOne = Console.ReadLine();
    Double.TryParse(thatOne, out y);

    if (/* Here I want to put "y is a number/double*/)
    {
        break;
    }
}

5 个答案:

答案 0 :(得分:4)

TryParse返回一个布尔值来说明解析是否成功

if (Double.TryParse(thatOne, out y))
{
    break;
}

来自documentation

  

返回值表示转换是成功还是失败。

答案 1 :(得分:2)

Double.TryParse返回一个布尔值,非常适合你的if语句

if (Double.TryParse(thatOne, out y)) {
    break;
}

答案 2 :(得分:2)

您对TryParse()有误解。你想检查x是否是双精度数。在你的代码中的某个地方,你没有在这里发布它可能有像double x = 0;这样的行。 您已将x和y定义为double。您想检查输入的字符串是否可以解析为双倍:

速记版本是:

if (Double.TryParse(thatOne, out x))
{
    break;
}

这也可以写成:

bool isThisOneDouble = Double.TryParse(thisOne, out x);

if (isThisOneDouble)
{
    break;
}

如果您真的想要检查变量是否属于某种类型而不尝试解析它,请尝试这样:

double x = 3;
bool isXdouble = x.GetType() == typeof(double); 

double x = 3;
if(x.GetType() == typeof(double)) 
{
   // do something
}

答案 3 :(得分:0)

使用bool控制循环,在满足条件时将bool设置为false ...

bool running = true;
while (running)
{                    
    Console.Write("I need to pour this much from this one: ");

    string thisOne = Console.ReadLine();

    if (Double.TryParse(thisOne, out y))
    {
         running = false
    }
}

答案 4 :(得分:0)

根据documentation,如果解析成功,TryParse会返回true,所以只需将你的tryparse放入if语句中即可。