第四课输入时的细节处理——C#计算器编程教学

来源:互联网 发布:js 自定义window对象 编辑:程序博客网 时间:2024/06/06 21:41
第一课中讲到,算式是有规矩的,不能任何输入都作有效输入,所以判断是否有效输入,这是第三课讲到了AddCaclString方法的负责处理。今天就专门讲这个方法。

先上代码:

        private void AddCaclString(bool isDecimal, bool isOP, string str)        {            if (!isDecimal && !isOP)            {                if (str == "0" && CaclString == "0")                {                    return;//这是什么情况?你自己想。                }                CaclString += str;                isOPAdded = false;//你得先添加Cacl的私有变量            }            else            {                if (isDecimal)                {                    if (!haveDecimal)                    {                        CaclString += str;                        haveDecimal = true;//你得先添加Cacl的私有变量                        isOPAdded = false;                    }                }                else                {                    if (isOP && CaclString != "")                    {                        if (!isOPAdded)                        {                            CaclString += str;                            isOPAdded = true;                            haveDecimal = false;                        }                        else                        {                            CaclString = CaclString.Remove(CaclString.Length - 1, 1) + str;//这又是什么情况?                            isOPAdded = true;                            haveDecimal = false;                        }                    }                }            }        }
这里说到了要添加私有变量,就是协助判断输入的有效性和顺序的严谨性。

private bool haveDecimal = false;//是否已输入小数点。private bool isOPAdded = false;//是否已输入操作符。
所谓私有,就是外界不知道的,自己在操作过程中定义的变量是为了协助判断。这种编程思想必须了解和掌握,毕竟就是WinForm中的每一个控件都会有很多控制私有变量,编程就是要有这种添加辅助变量的基本素养。
那么这两个变量是干什么用的呢?
算式输入小数点、数字、运算符,你得判断现在输入在什么位置,是还是继续输入数字,还是输入小数点,本数字已经输入小数点了又再次输入小数点当然是作无效判断,那么输入了操作符,意思就是输入下一个数字,那么又进入下一轮判断,如此循环而已。
这段程序解决了输入判断有效性的问题,如果让你自己写,会是个什么样子?可能还有漏洞,比如我只是解决了算式开头输入0后不能输入其它数字的问题,但中间 数字没有解决。这其实无关程序运行结果,所以我没有再考虑这个问题。
第四课结语。
判断往往需要辅助变量,善于添加辅助变量是程序员的基本能力。

0 0