用控制台实现的计算器思路完成过程
首先:为了满足界面要求,我做了一个方法来绘制界面,一、方便需要时刷新。方法和变量命名不是很规则主要是英语水平有限,
大家不要见怪啊。
public static void jsj()
        {
            Console.WriteLine(Console.Title = "计算器");
            Console.WindowWidth = 43;
            Console.WindowHeight =30;
            Console.WriteLine("    ");
            Console.WriteLine("     ");
            Console.WriteLine("▕▕                                ");
            Console.WriteLine("▕▕"+message +" ");
            Console.WriteLine("▕▕                                ");
            Console.WriteLine("  ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                       .       ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                       +       ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                       -       ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("      0      %       /       *       ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("                                     ");
            Console.WriteLine("  ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ ");
        }
为了满足不越界的要求:定义一个全局变量message来显示输入的数和显示计算结果,我这里能输入32个字符。当时就命名了两个char类型的数组  
 static char[] result = new char[32]; //接收输入的的一个数
static char[] result2 = new char[32];   //接收输入的的二个数。
可能当时为了满足不越界来存储每一个输入的字符,和方便提取出来才定义32唯 ,后来种种原因必须先赋给他‘ ’带有空格的字符(方便判定存储数所占的为数);
现在想来这样不是很好。
public static void clearzero()//
        {
            for (int i = 0; i < 32; i++)
            {
                result2[i] = ' ';
                result[i] = ' ';
            }
            tag = 0; //标记.的个数
            No = -1; //输入字符在数组result中的索引
            message = "                              0.";        //显示结果
        }
for循环为数组赋‘ ’其他变量是干什么的?为什么还写成方法? 
置于写此方法是在基本功能完成后,看到还少一个清零功能 。不就是重新运行吗 。即对所用到得变量重新赋值吗!看到这就写了此方法。这都是后话
 
char Char=  Console.ReadKey(true).KeyChar;此行代码就是监控用户输入,它应该在Main()内,且还得在一直为真的循环内部。Whiletrue
 
接下来就把监控到得数字显示出来:(这里用case接收我们需要的字符,如:123456789
         所以写了一个存储字符的方法SoreChar()
   public static void SoreChar(char keychar)
        {
            result[No] = keychar;
            message ="";
            for (int i = 31; i > No; i--)
            {
                message += " ";
                result[i] = ' ';
            }
            for (int i = 0; i <=No; i++)
            {
                message += result[i];
            }
        }
No我们定义的全局变量记录数组result【】中(我们需要数字)字符的个数  在这里也实现了时时显示输入的数  (现在来看,为什么没用字符串来接收输入的数)当时没想到,现在看来可以整体的改进。现在只讲讲当时的想法
 
接下来就是对零和小数点的存储,这需要有很多验证:1、先输入的是否是02、小数点的个数等。及他们的位置是否正确;如下调用验证字符方法(No:字符的个数 tag:小数点的个数。
switch (Char){
case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':
{No++;SoreChar(Char);break;}
case '0':{No++;CheckChar(Char);break;}
case '.':{No++;tag++;CheckChar(Char);break;}
No tag先做加加,验证失败在做减减处理。这样错误的输入不计在内。下面方法是对 零和小数点的验证
public static void CheckChar(char keychar)
        {
            if (keychar == '.' && No==0|| tag>1) //排除点的位置,和数量
            { No--;tag--;        }
            else if(keychar =='0'&&No ==1 &&result [0]=='0') //排除前两位都是零
            { No--;}
            else {SoreChar(keychar);}
        }
在下一步处理核心+-*%
  case '+':case '-':case '*':case '%':case '/':
                       {No = -1;ShowJspType(Char);JsType(Char);break;}
为了在Main()内少写代码;能用方法的我几乎都写到外面了;
ShowJspType(Char)就是为了显示计算类型,没打算也存储以下,只在屏幕中显示以下
        public static void ShowJspType(char keychar)
        {message = "";
for (int i = 31; i > 0; i--){message += " ";}
            message += keychar;}
这些代码很容易理解,于前面很多地方差不多,就是刷新使其显示。
 
由于字符太多多本篇显示不完放在下一篇中