(高分求大神解决)C#判断字符是否是数字,不是则继续重新输出

我在做C# 其中要输入数字 使用了异常处理 不用goto实现输入错误后继续重新输入,关于下面的this.Age上面已经定义了 不必纠结。

代码:
try
{
Console.Write("请输入年龄(1~100):");
this.Age = int.Parse(Console.ReadLine());
}
catch(FormatException e)
{
int i=0;
bool b =true;
while (b)
{
Console.Write(e.Message + "请重新输入:");
this.Age = int.Parse(Console.ReadLine());
if ((int.TryParse((this.Age).ToString(), out i)))
b = false;
else
b = true;
}

可是再重新输入的时候 用上面的方式不是又出现异常了吗?求解决

第1个回答  2012-09-26
简单些,这样试试
/// 循环读取输入
/// 输入正确 跳出循环
/// 输入错误 继续输入
///
while (true)
{
Console.Write("请输入年龄(1~100):");
/// 此处添加 try{} catch {} 块用于检测输入是否为正确的整数, 捕获到异常则说明输入非法,则重新输入
///
try
{
this.Age = int.Parse(Console.ReadLine().Trim());
if (this.Age >= 1 && this.Age <= 100)
{
break;//输入正确 则跳出循环
}
else
{
/// 年龄不在指定范围 则抛出异常
///
throw new Exception("输入的年龄不在指定范围内(1~100)");
}
}
catch (Exception ex)
{
Console.WriteLine("输入错误,请重新输入!");// 输入错误 则继续输入
Console.WriteLine("详细原因:{0}", ex.Message);
}
}
Console.WriteLine("输入的年龄为 {0}!!", this.Age);
第2个回答  2012-09-26
你这样子

你使用了异常处理,那麼你可以这麼来理解

//使用do-while循环来做,让用户先输入一次再去判断

do{
try
{
Console.Write("请输入年龄(1~100):");
this.Age = int.Parse(Console.ReadLine()); //你定义的是int类型,那麼除了数字,转换都会出 错
下面的句子就不会执行了
Mark=flase; //在循环外定义一个bool类型的变量,当作标签,如果能走到这里,说明输入没有出错
}

catch

{
Mark= true; //既然进来了,说明输入有问题了
Console.WriteLine("你的输入有误,请从新输入");

}

}
while(Mark); //用mark的值来判断是不是要循环,

Console.WriteLine("年龄"+Age);
第3个回答  2012-09-25
public static void Main(string[] args)
{
string age = null;
do
{
Console.Write(age == null ? "请输入年龄(1~100):" : "请重新输入:");
age = Console.ReadLine();
} while(!Regex.IsMatch("%s*[+-]?%d+%s*", age) || 0 > int.Parse(age) > 100);
this.Age = int.Parse(age);
}
第4个回答  2012-09-26
不需要用try...catch....的吧
用一个强制转换 如果结果为空 就说明输入数据错误了

比如
if((int)Console.Readline()==null)
{
Console.WriteLine("输入数据错误!");
}

try...catch太消耗资源了...追问

我说的是输入错误后要让其重新输入,直到正确为止 还有 我要的不只是这个判断 不用goto

追答

把我给你的代码加上几句改成递归就好了

第5个回答  2012-09-25
做个任务谢谢了

(高分求大神解决)C#判断字符是否是数字,不是则继续重新输出
\/\/\/ 输入错误 继续输入 \/\/\/ while (true){ Console.Write("请输入年龄(1~100):");\/\/\/ 此处添加 try{} catch {} 块用于检测输入是否为正确的整数, 捕获到异常则说明输入非法,则重新输入 \/\/\/ try { this.Age = int.Parse(Console.ReadLine().Trim());if (this.Age >= 1 && this...

C#如何判断一个字符串是不是数字
第三步:因为我们此次程序需要做的是判断我们输入的一个字符串是不是数字,所以我们需要if判断语句来对我们输入的字符串进行判断。第四步:在这里大家要注意,因为我们输入的是字符串,所以我们在定义的时候,变量类型一定要为字符型,即“char”,并且在后面的输入语句里,也要注意是“%c”,类型要与之...

C#如何判断字符串中是否包含某个字符
(2)Convert.ToInt16(string);\/\/当数字字符串的位数大于4的时候请使用Convert.ToInt32()(3)Convert.ToInt32(string);添加一个文本框TextBox1,和一个按钮Button1,当点击按钮时,判断文本框中的内容是否为数字字符串,是的话则输出转换后的数值。protected void Button1_Click(object sender,Event...

c#中如何将文本框中输入的字符进行判断,确定它是否为正数.(输入的字符...
isTrue++; \/\/每循环一次加一次,如果最后这个数跟字符串的总数一样,则 \/\/说明输入的是负数 continue; \/\/首字符是负号,后面代码不执行。继续循环,\/\/判断后面字符是否是数字 } \/\/判断后面的字符是否是数字 if(c == '0' || c == '1' || c == '2' && c == '3' || c == ...

c#判断输入的是不是数字
尝试转为数字。比如:string temp = "123";\/\/待确认的字符串 int result = 0;\/\/转为数字的结果 bool isNumber = int.TryParse(temp, out result);\/\/尝试转为数字 if (isNumber == true){ \/\/是数字 } else { \/\/不是数字 }

c# 判断字符串是否为数字
用正则表达式:\/\/\/ \/\/\/ 检测字符是否由整数组成 \/\/\/ \/\/\/ 要判断的字符串 \/\/\/ <returns>判断结果<\/returns> public bool IsInts(string str){ return Regex.IsMatch(str, "^-?\\d+$");} 记得添加命名空间 using System.Text.RegularExpressions;...

C#语言中,怎么判断一个字符串是数字,是汉字,还是字母开头的?
截取第一个字符,取它的ascii内码,看是多少,如果在 30h-39h之间就是数字,如果是41h或者61h以上,则是字母 另外还可以用正则表达式来判断,\\d 是数字, \\w是字母

C#判断字符串是否是数字字符串
1.使用正则表达式 2.使用for循环,然后将字符串一个个截取判断,注意ASCII码在48-57之间的就是数字,判断的时候注意-号

c#中如何判断文本框中是否是数字(包括小数)
楼上的方法可以,但是效率不高,另有2种方法: 1. float.TryParse; tryParse返回是否转换成功,是布尔型的返回值,如果返回false, 则表明可以被转换,true则表明字符串可以被转化为浮点型小数们也就是说输入的是小数。 2. 可以用正则表达式判断。具体到网上找,小数的正则很多。

c#判断字符串是否为数字?
string i = Console.ReadLine();int a=0;if (int.TryParse(i, out a) == false) \/\/判断是否可以转换为整型 { Console.WriteLine("False");} else { Console.WriteLine("Ture");} Console.ReadLine();给你写的一个控制台应用程序,希望对你有所帮助吧 ...

相似回答