c#计算器问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 23:34:51
我是个新手,有个问题请教一下
假如label1中的Text值为1+2+3,我想通过单击button1让label2中的值算出的6。我编得单击事件如下:
double a;
a = Convert.ToDouble(label1.Text);
label2.Text = a.ToString();
编译好像没有错误,但当单击button1时就会出错,我感觉好像与+有关 但又不知从何下手,请大侠帮修改下。如果不能直接算出的6,那么请告诉如何编
gileho的方法好像很深 看不明白 有没有适合初学者的 cnmahj你说的把表达式拆开怎么拆?

gihelo 太有才了!
竟然用计算列来搞定这个。佩服!

不过,建议楼之还是把表达式拆开,自己来算比较好。
那样有利于你尽快掌握C#。
其实别的计算机语言也一样。

把“1+2+3”这个字符串从前往后解析。
如果是简单的计算器,应该不用考虑括号和运算顺序,从前往后即可。
首先取出1放到一个数组里 intArray[0] = 1
取出符号+放到另一个数组里 strArray[0] = "+"
解析完结果为 intArray [0]=1 [1]=2 [2]=3 (长度为3)
strArray [0]="+" [1]="+"
对intArray 循环,从0到长度减2
给据strArray 的第i个元素判断出符号是什么,根据符号对intArray[i]和intArray[i+1]进行运算并把结果存入intArray[i+1]
这样,最后取出intArray[2]就是最终结果了。

C#学着挺难!

心情很不愉快!

最起码得有个Response.write("");事件吧?!

"1+2+3"的字符串值?

记不清楚了,貌似有一个方法可以直接计算,好像在c#的.net类库里有个Compiler类里面吧。

/// <summary>
/// 计算一个表达式的结果
/// </summary>
/// <param name= "expression "> 表达式 </param>
/// <returns> </returns>
public static object Eval(string expression)
{
System.Data.DataTable table = new