我的条件语句可以基于数据类型吗?

时间:2014-09-15 20:11:37

标签: c# .net if-statement

//capture input value for peak size and return 
public static int GetPeakSize()
{
    //declare variables, intitialize and parse after input
    int peak;
    Console.WriteLine("\nPlease enter the peak size (must be a number 1-10): ");
    peak = int.Parse(Console.ReadLine());

    //if user enter anything that is not inside the 1-10 range, default
    //to 3
    if (peak < 1 || peak > 10)
    {
        peak = 3;
    }

    return peak;
}

在上面的方法中,我只是试图收集输入,解析它,如果输入不在1-10的范围内,则返回默认值3.但不是仅仅验证数字输入,而是想要返回默认值3,如果ANYTHING但输入的数值为1-10。因此,如果他们输入“4”而不是4,我希望该值默认为3.我希望我可以按照if(value!= int || value&lt; 1 || value&gt; 10)的方式做一些事情。 )......默认= 3.我知道这不能做,但是它周围有吗?

2 个答案:

答案 0 :(得分:2)

您可能希望改为使用TryParse

    int peak;
    Console.WriteLine("\nPlease enter the peak size (must be a number 1-10): ");
    if (!int.TryParse(Console.ReadLine(), out peak) || peak < 1 || peak > 10)
    {
        peak = 3;
    }

上面的代码会尝试将输入解析为int - 如果不能,或者解析后的值超出范围限制,它会覆盖peak到{{1}继续之前。

编辑:错过了范围限制。

答案 1 :(得分:2)

使用int.TryParse。如果输入是非数字的,则int.Parse将抛出。

int peak = 0;
bool parseSuccess = int.TryParse(input, out peak);

if (!parseSuccess || peak < 1 || peak > 10)
{

}
如果输入无效,

int.TryParse将返回false,如果它有效,则解析后的值将包含在“out”参数中(在这种情况下为peak)。