国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

設計的一個計算器類的源代碼,很簡陋哦,請各位高手不要見笑!

2019-11-17 05:25:21
字體:
供稿:網(wǎng)友
//名字空間MyCalClass
//類名: CalClass
//無參的構造函數(shù)CalClass()
//6個用到的私有變量
//void PointClick()  按小數(shù)點
//string CE()  是計算器復位用的,clear函數(shù)
//string BackSpace(string Txt)  倒退鍵,參數(shù)是計算過程中現(xiàn)在顯示的計算結果
//string NumClick(string Txt,int NumKey)  0-9數(shù)字鍵按下的響應,Txt是計算的當前結果,NumKey是按下的數(shù)字值
//string OpClick(string Txt,int OpKey) +,-,*,/,=幾個鍵按下時的處理,Txt是計算的當前結果,OpKey是按下操作鍵的數(shù)字IDnamespace MyCalClass
{
    public class CalClass
    {
        PRivate string ResultTxt;    //Get and Show The Result of the TextBox in application
        private bool PointIsDown;    //If the radix point was clicked;
        private double MidResult;    //To Store middle results
        private double Results;    //To store finally result
        private int LastClick;    //To sign last clicking button class,is number(1) or Operator(2)
        private int LastOperator;    //To sign last clicked button of operator is who?0 is Null,1 is +,2 is - ,3 is *,4 is /,5 is =; 

       public CalClass()
        {
            ResultTxt = "0.";
            PointIsDown = false;
            MidResult = 0;
            Results = 0;
            LastClick = 0;
            LastOperator = 0;
        }        public void PointClick()   //按下小數(shù)點后的函數(shù)處理
        {

            PointIsDown = true;
            return;
        }        public string CE()  //按下CE鍵,清理計算器
        {
            ResultTxt = "0.";
            MidResult = 0;
            Results = 0;
            PointIsDown = false;
            LastClick = 0;
            LastOperator = 0;
            return ResultTxt;
        }
        public string BackSpace(string Txt)     //后退鍵按下后的處理函數(shù)
        {
            if(LastClick == 2)return Txt;      //假如上次的按鍵是操作,不是數(shù)字,直接返回,不能再退回            if (Txt[Txt.Length - 1] == '.')       //計算器文本里最后一位是小數(shù)點時的情況:
            {
                if (PointIsDown == true) { PointIsDown = false; return Txt; }    //假如小數(shù)點按下了,則退去小數(shù)點
                else
                {
                    if (Txt.Length == 2 && Txt[0] != '0') return "0.";    //假如現(xiàn)在只有一位整數(shù),"X."的情況,直接返回"0."
                    if (Txt.Length > 2) { ResultTxt = Txt.Remove(Txt.Length - 2, 2) + "."; return ResultTxt; }//否則,把最后一位去掉;
                }
            }
            else//假如最后一們不是小數(shù)點,很簡單,直接把最后一們?nèi)サ艟托辛?
            {
                ResultTxt = Txt.Remove(Txt.Length - 1, 1);
                return ResultTxt;
            }
            return ResultTxt;//最后還要返回一個東西,程序里要求的,雖然根本運行不到這里!
        }        public string NumClick(string Txt, int NumKey)//按下數(shù)字鍵(0-9)后的處理函數(shù)
        {
            //ResultTxt=Txt;
            LastClick = 1;//先標志一下,最后一次按鍵是"數(shù)字鍵"
            if (Txt[Txt.Length - 1] == '.')//最后一位是小數(shù)點的情況:
            {
                if (PointIsDown == true)//小數(shù)點已經(jīng)被按下
                {
                    ResultTxt = Txt + NumKey.ToString();//直接把按下的數(shù)字加到計算結果字符串上
                }
                else//小數(shù)點沒被按下的話
                {
                    if (Txt.Length == 2 && Txt[0] == '0')//假如現(xiàn)在的數(shù)值是0.的話,則把現(xiàn)在的數(shù)值直接變成按下的數(shù)字
                    {
                        ResultTxt = Txt.Replace("0", NumKey.ToString());
                    }
                    else
                    {
                        ResultTxt = Txt.Insert(Txt.Length - 2, NumKey.ToString());否則,就在小數(shù)點前加上當前按下的數(shù)字
                    }
                }
            }
            else//最后一位不是小數(shù)點的情況:直接把數(shù)字加到最后
            {
                ResultTxt = Txt + NumKey.ToString();
            }
            return ResultTxt;
        }
        public string OpClick(string Txt, int OpKey)//運算操作鍵按下的處理
        {
            bool Haspoint=false;//用來標志已有的運算結果中,是否有小數(shù)點

            PointIsDown = false;//按下任意運算鍵,小數(shù)點都設為未按下狀態(tài)
            if (LastClick == 2 && LastOperator != 5)//假如上一次按下的是操作運算鍵,并且不是等于號,則把上一次按下的內(nèi)容覆蓋,然后直接返回
            {
                LastClick = 2;
                LastOperator = OpKey;
                return Txt;
            }
            Results=double.Parse(Txt);//把現(xiàn)有的計算結果從string轉(zhuǎn)為double型            switch (LastOperator)//根據(jù)上一次按下的操作按鍵來確定這次要做的運算
            {
                case 0:
                    MidResult=Results;//假如從未按過運算符鍵,則把當前的數(shù)值做為第一操作數(shù)
                    break;
                //以下1-4是計算加,減,乘,除運算
                case 1:
                    Results += MidResult;
                    break;
                case 2:
                    Results = MidResult - Results;
                    break;
                case 3:
                    Results *= MidResult;
                    break;
                case 4:
                    if (Results == 0.0) { throw new System.Exception("Can Div with 0!"); }//除數(shù)為零的異常
                    Results = MidResult / Results;
                    break;
                case 5:
                    MidResult=Results;//假如上一次按下等于號,同樣要把當前的數(shù)值做為第一操作數(shù)
                    break;
            }
            ResultTxt=Results.ToString();
            for(int i=0;i<ResultTxt.Length;i++)//整數(shù)計算時,最后結尾會沒有小數(shù)點,這里要加上計算結果里有沒有小數(shù)點的標志
            {
                if(ResultTxt[i]=='.'){HasPoint=true;break;}
            }
            if (HasPoint) return ResultTxt;
            else return ResultTxt + ".";
        }
    }
}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兴市| 鸡泽县| 石城县| 乐业县| 赫章县| 北安市| 疏附县| 华池县| 礼泉县| 乐清市| 芦溪县| 舞钢市| 石首市| 正阳县| 县级市| 华阴市| 南丰县| 公主岭市| 海林市| 隆林| 边坝县| 建湖县| 错那县| SHOW| 奉节县| 四平市| 绥宁县| 西贡区| 保亭| 龙州县| 夏邑县| 筠连县| 宜春市| 鄢陵县| 磐安县| 四川省| 宜良县| 西丰县| 霍州市| 黄浦区| 锦州市|