- -高手来帮我看看我哪里错了`

whese 2009-04-19 06:39:50

private void button1_Click(object sender, EventArgs e)
{
double num1;//第一个计算数;
double num2;//第二个计算数;
double result; //结果
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);


if (txtnum1.Text!="")
{
if (cbbOperator.Text!="")
{
if (txtnum2.Text!="")
{
 switch (cbbOperator.Text)
{
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (double.Parse( txtnum2.Text) != 0)
{
result = num1 / num2;

}
else
{
MessageBox.Show("除数不能为0");
}
break;
case "%":
if (double.Parse( txtnum2.Text)!=0)
{
result = num1 % num2;
}
else
{
MessageBox.Show("除数不能为0");
}
break;
default:
MessageBox.Show("请选择运算符");
break;
}

}
else
{
MessageBox.Show("请输入第二个计算数");
}
}
else
{
MessageBox.Show("请输入运算符");
}

}
else
{
MessageBox.Show("请输入第一个计算数");
}

}

我想输入空值```它就给我爆了``不知道怎么改哦`
...全文
129 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
netlangzi 2009-04-19
  • 打赏
  • 举报
回复
那就加个判断禁止输入空格喽
whese 2009-04-19
  • 打赏
  • 举报
回复
多谢楼上的``我也是在想这个问题``我也是新手``慢慢学咯``一开始也知道是这个问题但自己总是想不出解决的办法``现在学习到了``HOHO``开心
l450854908 2009-04-19
  • 打赏
  • 举报
回复
如果输入的是空的
而你又强制转了
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);
空的""能转double吗
而你转换又再if条件的前面,
转换这个地方就错了 还能在if条件这判断吗?
不知道你听懂了吗?

whese 2009-04-19
  • 打赏
  • 举报
回复


private void button1_Click(object sender, EventArgs e)
{
double num1=0;//第一个计算数;
double num2=0;//第二个计算数;
double result=0; //结果




bool gotNumber = true;
if (!double.TryParse(txtnum1.Text, out num1))
{
num1 = 0;
MessageBox.Show("请输入第一个计算数,注意格式");
gotNumber = false;
}
if (!double.TryParse(txtnum2.Text, out num2))
{
num2 = 0;
MessageBox.Show("请输入第二个计算数,注意格式");
gotNumber = false;
}
if (!gotNumber)
return;
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);

if (cbbOperator.Text!=null)
{

 switch (cbbOperator.Text)
{
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (double.Parse( txtnum2.Text) != 0)
{
result = num1 / num2;

}
else
{
MessageBox.Show("除数不能为0");
}
break;
case "%":
if (double.Parse( txtnum2.Text)!=0)
{
result = num1 % num2;
}
else
{
MessageBox.Show("除数不能为0");
}
break;
default:
MessageBox.Show("请选择运算符");
break;
}

}


else
{
MessageBox.Show("请输入运算符");
}



txtResult.Text = result.ToString();

}



二楼的大哥`谢谢了``问题解决``应该在输入两个值的时候就判断`他是否为空值``这样后面的判断也没有必要去写了``谢谢你咯`
larkonmaple 2009-04-19
  • 打赏
  • 举报
回复
空值在parse函数内要报错的,在调用前可以先用string.isnullorempty()来判断下。用try{}catch{}来处理也很好
whese 2009-04-19
  • 打赏
  • 举报
回复
问题是出这
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);
这两个句子``我知道这里错``但我不知道怎么改他``才可以让num1和 num2接受一个空值``

难道要把它们设成string类型不成??
whese 2009-04-19
  • 打赏
  • 举报
回复
大哥`这段代码要写在哪里判断呢`?
LemIST 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 LemIST 的回复:]
或者

C# code if(!double.TryParse(textBox1.Text, out num1));
num1 = 0;
if (!double.TryParse(textBox1.Text, out num2))
num2 = 0;
[/Quote]
改一下
bool gotNumber = true;
if(!double.TryParse(txtnum1.Text, out num1))
{
num1 = 0;
MessageBox.Show("请输入第一个计算数,注意格式");
gotNumer = false;
}
if (!double.TryParse(textBox1.Text, out num2))
{
num2 = 0;
MessageBox.Shuw("请输入第二个计算数,注意格式");
gotNumber = false;
}
if(!gotNumber)
return;
deng520159 2009-04-19
  • 打赏
  • 举报
回复
楼主你只有不捕捉异常,在调试就会提示在什么地方错了,并且提示的信息很完全,你只接改了就行了,
shidaitianzi 2009-04-19
  • 打赏
  • 举报
回复
学习
whese 2009-04-19
  • 打赏
  • 举报
回复
UP``解决了`我才关楼```
whese 2009-04-19
  • 打赏
  • 举报
回复
不要沉啊``我打的代码是正确的``但是我要的效果没有达到哦``我好郁闷~~~应该是那两个数如果没有填的话`无法转换到符点型的吧``所以系统给我爆了`= =但我要怎么改才能做出我要的效果 呢
whese 2009-04-19
  • 打赏
  • 举报
回复
异常抛出后是:输入字符串的格式不正确。

因为我要的效果是如果第一个数`或第二个数没有填的话`跳出窗口提示`请输入第一个数`或请输入第二个数
uncleson88 2009-04-19
  • 打赏
  • 举报
回复
象这种情况一般还是加上 try { } catch { }比较稳当
蓝海D鱼 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 LemIST 的回复:]
引用楼主 whese 的帖子:
C# code
private void button1_Click(object sender, EventArgs e)
{
double num1;//第一个计算数;
double num2;//第二个计算数;
double result; //结果
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);


if (txtnum1.Text!="")
{

[/Quote]

正确
whese 2009-04-19
  • 打赏
  • 举报
回复
爆了就是出了黄色的字``但是他不给说我哪里错了`


这是一个窗体的点击事件啊``我刚刚试了`如果给第一个第二个数都写上值的话是可以运行的`

但是如果我第一个和第二个空着不写`就爆了`
LemIST 2009-04-19
  • 打赏
  • 举报
回复
或者
      if(!double.TryParse(textBox1.Text, out num1));
num1 = 0;
if (!double.TryParse(textBox1.Text, out num2))
num2 = 0;
LemIST 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 whese 的帖子:]
C# code
private void button1_Click(object sender, EventArgs e)
{
double num1;//第一个计算数;
double num2;//第二个计算数;
double result; //结果
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);


if (txtnum1.Text!="")
{
if (cbbOperator.Tex…
[/Quote]
什么叫爆了?出异常?
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);
这里如果txtnum1里面是空格会有异常报出。

            try
{
num1 = double.Parse(txtnum1.Text);
num2 = double.Parse(txtnum2.Text);
}
catch (FormatException e1)
{
txtnum1.Text = e1.Message;
}

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧