折磨人的控制台计算器_折磨今天的作业,要在控制台实现。
第一步画出很好实现,只要在中间需要显示数据的一行有些修改可以传值就行了。
static void draw(string num)
        {
            drawTop();
            Console.Write("▕         ▕");
            Console.Write("{0}", num);
            writeAt("▕           ▕", 52, 4);
            drawDown();
        }
drawTop()和drawDown()都只是基本的Console.WriteLine画出的布局,关键在 writeAt("▕           ▕", 52, 4);这里有个方法
static void writeAt(string s, int x, int y)
        {
            Console.SetCursorPosition(x, y);
            Console.WriteLine(s);
        }
其中Console.SetCursorPosition(x, y);定位光标位置,x,y是坐标需自己找,这样在占位符{0}中传值的时候,就不会把后方的竖杠向后推了,输入数字是布局不会变动。
我的技术太有限了,或者说是设计思想,这个程序做了一天也没成功,期间我数次抬头仰望墙壁上的那两行字“设计思想胜于编程技术,领域见识决定专业高度”,说的太好了,我看着它们编不出来代码内牛满面~!
最后询问了同桌一姐又看了她的源代码终于弄出来了,但一姐的也不是太完善,在输入符号的时候需要把之前输入数截取做个标记,在这里用Enter键
static string getNum()
        {
            string temp = "";
            ConsoleKeyInfo cki = new ConsoleKeyInfo();
            while (cki.Key.ToString() != "Enter")
            {
                draw(temp);
                cki = Console.ReadKey();
                temp += cki.KeyChar.ToString();
                Console.Clear();
            }
            return temp;
        }
这是main方法
static void Main(string[] args)
        {
            string str1 = getNum();
            double d1=Convert.ToInt64(str1);
            ConsoleKeyInfo cki = Console.ReadKey(false);
            string str2 = getNum();
            double d2=Convert.ToInt64(str2);
            string reasult =Convert.ToString( Count(d1, d2, cki.KeyChar));
            draw(reasult);
        }
cki是获取的符号键,count是计算函数,太长了大同小异一下截取加法
static double Count(double d1,double d2,char c)
        {
            if (c == '+')
            {
                double r = d1 + d2;
                return r;
            }
            else if(c=='-')···