简单C#:如何检查字符串输入是有效数字还是小于某个数字?
我知道&&int.TryParse(birthMonth,out monthInt)==false)是我的问题所在,但我发布它是为了更好地解释我的问题 我希望验证用户输入(字符串)是否为数字且小于或等于12——这是一个有效的月份简单C#:如何检查字符串输入是有效数字还是小于某个数字?,c#,C#,我知道&&int.TryParse(birthMonth,out monthInt)==false)是我的问题所在,但我发布它是为了更好地解释我的问题 我希望验证用户输入(字符串)是否为数字且小于或等于12——这是一个有效的月份 // Get user's month of birth Console.Write("\nFascinating! What month? (1-12): "); birthMonth = Console.ReadLine();
// Get user's month of birth
Console.Write("\nFascinating! What month? (1-12): ");
birthMonth = Console.ReadLine();
// Check to see if user input for month is a number
int monthInt;
while (int.Parse(birthMonth) >= 13 && int.TryParse(birthMonth, out monthInt) == false)
{
Console.WriteLine("Invalid input. Please enter a number less than, or equal to 12!");
birthMonth = Console.ReadLine();
}
您需要首先使用
int.TryParse
进行解析,然后检查解析后的数字,如:
while (!int.TryParse(birthMonth, out monthInt) || monthInt >=13)
您还必须检查monthInt
是否小于1
有几件事需要注意:
- 使用
,因为它在失败时不会引发异常李>int.TryParse
- 使用
,因为这将进行短路评估,并根据您的情况纠正操作员|
int.TryParse
解析,然后检查解析后的数字,如:
while (!int.TryParse(birthMonth, out monthInt) || monthInt >=13)
您还必须检查monthInt
是否小于1
有几件事需要注意:
- 使用
,因为它在失败时不会引发异常李>int.TryParse
- 使用
,因为这将进行短路评估,并根据您的情况纠正操作员|
Parse
和TryParse
,在一次足够的情况下对值进行两次解析:
int parsedMonth;
if (int.TryParse(birthMonth, out parsedMonth))
{
if (parsedMonth < 13)
{
// do whatever you need with the value
}
else
{
// out of range
}
}
else
{
// not a number
}
int-parsedMonth;
if(int.TryParse(生日月、外解析月))
{
如果(解析月<13)
{
//用这个值做你需要的任何事情
}
其他的
{
//超出范围
}
}
其他的
{
//不是数字
}
TryParse
解析值后返回true
或false
<代码>解析将在输入无效时引发异常
这不是最简洁的书写方式,但您可以更轻松地遵循逻辑。您正在调用
Parse
和TryParse
,在一次足够的情况下,对值进行两次解析:
int parsedMonth;
if (int.TryParse(birthMonth, out parsedMonth))
{
if (parsedMonth < 13)
{
// do whatever you need with the value
}
else
{
// out of range
}
}
else
{
// not a number
}
int-parsedMonth;
if(int.TryParse(生日月、外解析月))
{
如果(解析月<13)
{
//用这个值做你需要的任何事情
}
其他的
{
//超出范围
}
}
其他的
{
//不是数字
}
TryParse
解析值后返回true
或false
<代码>解析将在输入无效时引发异常
这不是最简洁的书写方式,但您可以更轻松地遵循逻辑。您需要使用
TryParse
尝试将字符串值解析为原语。所有原语--bool
、int
、byte
、DateTime
等都有此方法。创建一个函数来验证输入:
var birthMonth = Console.ReadLine();
int month;
if(!ValidateMonth(birthMonth, out month) {
// process invalid month or whatever
}
bool ValidateBirthMonth(string birthMonth, out int month) {
var month = default(int);
if(!int.TryParse(birthMonth, out month)) {
Console.WriteLine("invalid month");
return;
}
if (month >= 1 && month <= 12) {
Console.WriteLine("... great!!!");
return;
}
Console.WriteLine("invalid entry: month must be 1-12");
}
var birthdmonth=Console.ReadLine();
整月;
如果(!ValidateMonth(生日月、外出月){
//处理无效的月份或其他什么
}
bool ValidateBirthMonth(字符串birthMonth,out int month){
var月=默认值(整数);
如果(!int.TryParse(生日月、外出月)){
Console.WriteLine(“无效月份”);
返回;
}
如果(月>=1&&month,您需要使用TryParse
尝试将字符串值解析为原语。所有原语-bool
、int
、byte
、DateTime
等-都有此方法。生成一个函数以验证输入:
var birthMonth = Console.ReadLine();
int month;
if(!ValidateMonth(birthMonth, out month) {
// process invalid month or whatever
}
bool ValidateBirthMonth(string birthMonth, out int month) {
var month = default(int);
if(!int.TryParse(birthMonth, out month)) {
Console.WriteLine("invalid month");
return;
}
if (month >= 1 && month <= 12) {
Console.WriteLine("... great!!!");
return;
}
Console.WriteLine("invalid entry: month must be 1-12");
}
var birthdmonth=Console.ReadLine();
整月;
如果(!ValidateMonth(生日月、外出月){
//处理无效的月份或其他什么
}
bool ValidateBirthMonth(字符串birthMonth,out int month){
var月=默认值(整数);
如果(!int.TryParse(生日月、外出月)){
Console.WriteLine(“无效月份”);
返回;
}
如果(月>=1&&month,您可以使用TryParse和和条件一起检查,如下所示
int outvar = -1;
while (!int.TryParse(Console.ReadLine(),out outvar) && (outvar<=0 && outvar>12))
{
//your rest of the code
}
intoutvar=-1;
而(!int.TryParse(Console.ReadLine(),out-outvar)和&(outvar12))
{
//剩下的代码
}
或者您可以使用TryParse和条件一起检查,如下所示
int outvar = -1;
while (!int.TryParse(Console.ReadLine(),out outvar) && (outvar<=0 && outvar>12))
{
//your rest of the code
}
intoutvar=-1;
而(!int.TryParse(Console.ReadLine(),out-outvar)和&(outvar12))
{
//剩下的代码
}
输入应
- 表示
int
,即int.TryParse
应返回true
- 至少为
1
- 最多为
12
当这些条件中的任何一个失败(!
-反转)时,循环:
while(!(int.TryParse(birthMonth,out monthInt)&&monthInt>=1&&monthInt输入应
- 表示
int
,即int.TryParse
应返回true
- 至少为
1
- 最多为
12
当这些条件中的任何一个失败(!
-反转)时,循环:
while(!(int.TryParse(birthMonth,out-monthInt)&&monthInt>=1&&monthInt你不需要像那样同时使用int.Parse
和int.TryParse
。在这个场景中只需使用int.TryParse
。在这里阅读out
的工作原理,你可以删除int.Parse(birthMonth)
completely您不需要像那样同时使用int.Parse
和int.TryParse
。在这种情况下,只需使用int.TryParse
。在这里阅读out
的工作原理,您可以删除int.Parse(生日月)
completelyal同样,如果你被这个神奇的数字冒犯了,你可以使用一个TotalCalendarYearMonths
常量。或者获取实际的月数;)CultureInfo.CurrentCulture.Calendar.GetMonthsInYear(DateTime.Today.Year)
您必须添加monthInt@DmitryBychenko,我在代码下方添加了一个注释。我想知道他在代码中做错了什么,并理解他