c#中的未处理 System.FormatException问题 50
privatevoidbutton12_Click(objectsender,EventArgse){inta,b,result=0;charm='',n;intpos=...
private void button12_Click(object sender, EventArgs e)
{
int a, b, result = 0;
char m = ' ', n;
int pos = 0;
while (m != '+' && m != '-' && m != '*' && m != '/')
{
m = Convert.ToChar(textBox1.Text.Substring(pos, 1));
pos++;
}
string str = Convert.ToString(textBox1.Text);
a = Convert.ToInt32(str.Substring(0, pos - 1));
b = Convert.ToInt32(str.Substring(pos, textBox1.Text.Length - pos));
n = Convert.ToChar(str.Substring(pos - 1, 1));
switch (n)
{
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
textBox1.Text = "ERROR"; break;
}
textBox1.Text = Convert.ToString(result);
}
在运行计算器时,点了“=”过后显示的错误
错误行即为 a = Convert.ToInt32(str.Substring(0, pos - 1));
不知道是为什么 展开
{
int a, b, result = 0;
char m = ' ', n;
int pos = 0;
while (m != '+' && m != '-' && m != '*' && m != '/')
{
m = Convert.ToChar(textBox1.Text.Substring(pos, 1));
pos++;
}
string str = Convert.ToString(textBox1.Text);
a = Convert.ToInt32(str.Substring(0, pos - 1));
b = Convert.ToInt32(str.Substring(pos, textBox1.Text.Length - pos));
n = Convert.ToChar(str.Substring(pos - 1, 1));
switch (n)
{
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
default:
textBox1.Text = "ERROR"; break;
}
textBox1.Text = Convert.ToString(result);
}
在运行计算器时,点了“=”过后显示的错误
错误行即为 a = Convert.ToInt32(str.Substring(0, pos - 1));
不知道是为什么 展开
展开全部
格式异常,对你的代码来说,错误在于str的值。
SubString()方法,第一个参数是子字符串开始位置,第二个参数是子字符串长度,很显然,出错的原因是pos-1的值大于str的长度,或者pos-1小于等于零。
你的代码主要是没对变量的有效性做检查。跟踪一下,看看str的值,错误应该就是str的长度小于pos-1。
SubString()方法,第一个参数是子字符串开始位置,第二个参数是子字符串长度,很显然,出错的原因是pos-1的值大于str的长度,或者pos-1小于等于零。
你的代码主要是没对变量的有效性做检查。跟踪一下,看看str的值,错误应该就是str的长度小于pos-1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a = Convert.ToInt32(str.Substring(0, pos - 1));
里的pos 可能等于1,那么pos -1就等于0
结果就是 a="" 或者a=null
这样肯定会报转换异常
里的pos 可能等于1,那么pos -1就等于0
结果就是 a="" 或者a=null
这样肯定会报转换异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.FormatException说明是格式异常。
你换个方式转换它的格式。其实你的b也存在同样的问题,只是系统捕抓到a的,就不在往下捕抓而已。
你换个方式转换它的格式。其实你的b也存在同样的问题,只是系统捕抓到a的,就不在往下捕抓而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Copy了你的代码,在这这运行没错啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询