C#中如何判断输入的一个数是不是整数,如何处理异常 哪位高手能帮帮我

题目是:判断四个整数的最大值,在输入的时候如果输入的不是整数,从新输入(不是第一个开始输入,是哪一个错了从新输入哪一个),比如输入的是:12a,那么要从新输入第三个数。下... 题目是:判断四个整数的最大值,在输入的时候如果输入的不是整数,从新输入(不是第一个开始输入,是哪一个错了从新输入哪一个),比如输入的是:1 2 a,那么要从新输入第三个数。
下面是我写的程序,但不知道如何捕捉异常,以及处理异常
class Program
{
static void Main(string[] args)
{
int a;
int b;
int c;
int d;
int max;
int max1;
int max2;

Console.WriteLine("请输入需要比较最大值的四个整数:");
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
d = Convert.ToInt32(Console.ReadLine());

max1 = a > b ? a : b;
max2 = c > d ? c : d;
max = max1 > max2 ? max1 : max2;
Console.WriteLine("最大数是:{0}", max);
}
}
哪位高手能详细地说明一下如何处理啊,我觉得2楼的思想不错,可是我是菜鸟,还是有点不懂!
展开
 我来答
绯雨晨
2010-03-23 · TA获得超过141个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:121万
展开全部
using System.Text.RegularExpressions;

string a = "";
string b = "";
string c = "";
string d = "";
int max1 = 0;
int max2 = 0;
int max = 0;
a = Console.ReadLine();
while (!IsNum(a))
{
Console.WriteLine("非数字,请重新输入。");
a = Console.ReadLine();
}
b = Console.ReadLine();
while (!IsNum(b))
{
Console.WriteLine("非数字,请重新输入。");
b = Console.ReadLine();
}
c = Console.ReadLine();
while (!IsNum(c))
{
Console.WriteLine("非数字,请重新输入。");
c = Console.ReadLine();
}
d = Console.ReadLine();
while (!IsNum(d))
{
Console.WriteLine("非数字,请重新输入。");
d = Console.ReadLine();
}
max1 = Convert.ToInt32(a) > Convert.ToInt32(b) ? Convert.ToInt32(a) : Convert.ToInt32(b);
max2 = Convert.ToInt32(c) > Convert.ToInt32(d) ? Convert.ToInt32(c) : Convert.ToInt32(d);
max = max1 > max2 ? max1 : max2;
Console.WriteLine("最大数是:{0}", max);
Console.WriteLine("按任意键退出!");
Console.ReadLine();
}

public static bool IsNum(string s)
{
return Regex.IsMatch(s, @"^\d+");
}

记事本写的..未测试...
user_pyw
2010-03-23 · TA获得超过325个赞
知道小有建树答主
回答量:324
采纳率:0%
帮助的人:277万
展开全部
try{a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
d = Convert.ToInt32(Console.ReadLine());

max1 = a > b ? a : b;
max2 = c > d ? c : d;
max = max1 > max2 ? max1 : max2;
Console.WriteLine("最大数是:{0}", max);
}catch(错误类型){
错误处理
}finally{
..........
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ping3021
2010-03-23 · TA获得超过488个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:289万
展开全部
楼上的可以 不过还是有一个问题是
"是哪一个错了从新输入哪一个"
最好每一个分别try{}catch{}
建议单独写一个函数做转换处理

private int ConvertString(String value)
{
int i = 0;
try
{
i = Convert.ToInt32(value);
}catch{

}
return i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanyu323
2010-03-23 · 超过15用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:36万
展开全部
这个问题还用?还要问的?!~首先你的几个数字是分别输入还是输在一起的?!~分别输入的几个参数就不说了,如果是输在一起的,请用","号隔开,然后用List<>拆解,分别验证数字就能明白是第几个数字不对了,还有验证数据有很多方法,比如正则表达式验证
引用using System.Text.RegularExpressions;
public static bool IsNumber(string num)
{
if (num == null)
{
return false;
}
if (num == string.Empty)
{
return false;
}
if (num == "0")
{
return true;
}
Regex rg = new Regex("^[0-9]*[1-9][0-9]*$");
if (rg.IsMatch(num))
{
return true;
}
else
{
return false;
}
}
这个验证100%没问题,不过"^[0-9]*[1-9][0-9]*$"这个正则表达式是验证正整数的,如果你的有负数小数什么的,你就找找相关正则表达式吧,网上很多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式