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楼的思想不错,可是我是菜鸟,还是有点不懂! 展开
下面是我写的程序,但不知道如何捕捉异常,以及处理异常
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楼的思想不错,可是我是菜鸟,还是有点不懂! 展开
4个回答
展开全部
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+");
}
记事本写的..未测试...
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+");
}
记事本写的..未测试...
展开全部
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{
..........
}
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{
..........
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的可以 不过还是有一个问题是
"是哪一个错了从新输入哪一个"
最好每一个分别try{}catch{}
建议单独写一个函数做转换处理
private int ConvertString(String value)
{
int i = 0;
try
{
i = Convert.ToInt32(value);
}catch{
}
return i;
}
"是哪一个错了从新输入哪一个"
最好每一个分别try{}catch{}
建议单独写一个函数做转换处理
private int ConvertString(String value)
{
int i = 0;
try
{
i = Convert.ToInt32(value);
}catch{
}
return i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题还用?还要问的?!~首先你的几个数字是分别输入还是输在一起的?!~分别输入的几个参数就不说了,如果是输在一起的,请用","号隔开,然后用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]*$"这个正则表达式是验证正整数的,如果你的有负数小数什么的,你就找找相关正则表达式吧,网上很多
引用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]*$"这个正则表达式是验证正整数的,如果你的有负数小数什么的,你就找找相关正则表达式吧,网上很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询