c#中的未处理 System.FormatException问题

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));
不知道是为什么

首先肯定是你textbox里面的格式不对,你是否运行的时候textbox里面是空的,你可以将textBox1.Text属性给予例如”1+2“试一下
如果不想加可以在程序里面加个判断
if(textBox1.Text != "")
{
//你上面所有的代码
}
s实在不行可以设置中断按F11单步调试
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-16
格式异常,对你的代码来说,错误在于str的值。
SubString()方法,第一个参数是子字符串开始位置,第二个参数是子字符串长度,很显然,出错的原因是pos-1的值大于str的长度,或者pos-1小于等于零。

你的代码主要是没对变量的有效性做检查。跟踪一下,看看str的值,错误应该就是str的长度小于pos-1。
第2个回答  2009-05-31
a = Convert.ToInt32(str.Substring(0, pos - 1));
里的pos 可能等于1,那么pos -1就等于0
结果就是 a="" 或者a=null
这样肯定会报转换异常
第3个回答  2009-05-16
System.FormatException说明是格式异常。
你换个方式转换它的格式。其实你的b也存在同样的问题,只是系统捕抓到a的,就不在往下捕抓而已。
第4个回答  2009-05-16
Copy了你的代码,在这这运行没错啊?

c#中的未处理 System.FormatException问题
首先肯定是你textbox里面的格式不对,你是否运行的时候textbox里面是空的,你可以将textBox1.Text属性给予例如”1+2“试一下 如果不想加可以在程序里面加个判断 if(textBox1.Text != ""){ \/\/你上面所有的代码 } s实在不行可以设置中断按F11单步调试 ...

100分!未处理异常 System.FormatException:输入字符串的格式不正确
Console.WriteLine("the first number is "+Comparison+" the second number。");这里用字符串拼接就可以了。

C#未处理formatexception 总是报异常
int ch = Console.Read(); Console.WriteLine("ASCII编码为:" + ch); char tt = Convert.ToChar(ch); Console.WriteLine(tt); Console.WriteLine(" "); \/\/ 要注意的就是下面这一行↓ Console.ReadLine(); double r, s; Console.WriteLine("r="); string xx...

未处理 System.FormatException 输入字符串的格式不正确
("{o}+{1}i",这的{o}是字母o,应该是数字0啊

...on1出现调试器抛出异常 System.FormatException:
void Button1Click(object sender, System.EventArgs e) { textBox1.Text=string.Format("{O:X},{1:X}",(int)'一',(int)'龥'); }错误提示为:调试器抛出异常 System.FormatException:输入字符串的格式不正确。首先,你所贴出来的异常,及代码来看,void Button1Click(object sender, ...

System.FormatException: 该字符串未被识别为有效的 DateTime。 C#运行...
DateTime a = Convert.ToDateTime(dataGridView1.SelectedCells[1].Value.ToString());不要使用这种转换方式。DateTime.TryParse,用这个来做日期转换

c#输入字符串格式不正确 未处理的formatexception
formatexception?这个错误证明的输入的属于格式错误,而不是数字的大小范围问题,你可以调试下,看看这个文本框的是不是数字?

C#登陆失败,未处理FormatException,输入字符串的格式不正确。
按照你的SQL来看,你是在查询是否存在录入账号密码对应的记录,所以应该用聚合函数COUNT来解决。把SQL语句 select * from login_user where username='" + this.txtusername.Text + "' and password='" + this.txtpassword.Text + "'"改成 select count(*) from login_user where username='" ...

...但是System.FormatException:“输入字符串的格式不正确。”_百度知...
报错的地方是要把 字符串 转为float。但是 字符串的内容 不是 数值,所以无法转换就报错了。你断点看下报错时 list[k]的内容就知道了

C#语言System.FormatException:"输入字符串的格式不正确
{0}里面的空格去掉

相似回答