//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.我知道这不能做,但是它周围有吗?
答案 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
)。