接下来就是对+-*%的操作:
JsType(Char)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

从开始的时候我就先好了有一个方法分别处理+-*% 等到了真写到这里还有很多要考虑,

不知从那下手。不但要对这些字符输入的先后,各种情况要考虑:如

用户的输入:+12++12 12+12 *;12+12 * +;12+12 ++;12+12=;等这些情况;其他的情况因该不会再有了

所以要考虑每一种的流程,去验证,计算;

+ :如果先输入运算符,就因该排除 可以用result[0]=‘ ’应为还没存入其他字符;

12+12 :当我先输入运算符后再输入第二数时,考虑到可以再存入result[]方便;就又写一个方法Changeresult();result[]的值传给result2[] 在吧result[]清空接受第二值,在做求和运算方法SUM(TagType);考虑到12+12 *12运算符改变,先做前一个运算结果保存到result2[]内,我有用一个变量TagType保存运算符号

代码如下:

    public static void JsType(char keychar)

        {

        if (result[0] == ' ') // 排除第一种情况先输运算符和连输两个运算符和计算前result有值

            {

TagType = keychar;

            }

            else{

                switch (keychar)

{

case '+':case '-':case '*':case '%':case '/':

                        {

                            if (result2[0] == ' ')// 判断是否第一次开始计算                            {

                                Changeresult();// 是就对result2赋值

                                TagType = keychar;//

                            }

                            else

                            {

                                SUM(TagType);// 开始计算:此时TagType保存的是上一次的运算符

                                TagType = keychar;// 保存这次运算符

                            }

                            break;

                        }    

                    default:

                        {

                            break;

                        }

                }

            }

        }

做好各个情况的验证 下一步就是开始计算 ,计算是需把result result2的内容转化位小数型

方法ChangCharTD(char rchar[] )此方法比较简单不在介绍

public static double  ChangCharTD(char[] rchar)

        {string number1 = " ";double  number=0;

            for (int i = 0; i < 32; i++){if (rchar[i] != ' '){number1 += rchar[i]; }}

            number = double .Parse(number1);

            return number;

        }

在做下面的方法时,只是为了实现加法,实现了之后。发现其他运算都相同,

     public static void SUM(char typee )

        {

            double Sumresult=0.0;// 声明一个变量保存计算结果

            if (typee == '+'){Sumresult = ChangCharTD(result) + ChangCharTD(result2);}

            else if (typee == '-'){Sumresult = ChangCharTD(result2) - ChangCharTD(result);}

            else if (typee == '*'){Sumresult = ChangCharTD(result) * ChangCharTD(result2);}

            else if (typee == '/'){Sumresult = ChangCharTD(result2) / ChangCharTD(result);}

            else if (typee == '%'){Sumresult = ChangCharTD(result2) % ChangCharTD(result);}

else {

Sumresult = ChangCharTD(result2); // 次行是result无值的情况及连输运算符result2有值的情况,用及录上次运算的结果。

}

               string a = "" + Sumresult;//

               int j=0; // 记录保存到result2内有用字符的位数

               foreach (char i in a) 将运算结果打散保存到result2

               {

                   result2[j] = i;//

                   j++;

               }

               for (int i = j+1; i <=31; i++)

               {

                   if (typee == '%')// 为什么单单对 % 判断??应为在测试中当取余结果为零时多保存了‘0’字符;这样修改后问题解除

                   {

                       result2 [i-1]=' ';//

                   }

                   result2[i] = ' ';//

               }

                   Showresult();// 显示结果

        }

Showresult(); 方法:

       public static void Showresult()

        {

            message = "";

            int j = 0;

            for (int i = 31; i >=0; i--)

            {

               result[i] = ' ';// 将数组恢复

                if (result2[i] == ' ')

                {

                    message += " ";

                }

                else

                {

                    j = i;

                    break;

                }

            }

            for (int i = 0; i <= j; i++)

            {

                message += result2[i];

            }

        }

 源码在附件上:

       欢迎大家提出建议,对这个项目进行测试,有什么Bug请大家指出。共同改进。那个地方可以用更好更健康的解决方案虚心接受 ……