VS--- c# 计算器:单行输入全部计算(不能判断括号与先乘除后加减)

			//获取用户输入
            string usertext = textBox1.Text;
            //判断计算次数的参数
            bool Pass = false;
            //数据储存
            int i = 0;
            int o = 0;
            int sum = 0;
            //正则表达--匹配数字
            string expr = @"\d*\.?\d+";
            //匹配符号
            string expr_symbol = @"[\+\-\*/]";
            //获取正则匹配
            MatchCollection mc = Regex.Matches(usertext, expr);
            MatchCollection mc_symbol = Regex.Matches(usertext, expr_symbol);
            //只输入值的情况
            if (mc_symbol.Count == 0)
            {
                label5.Text = usertext;
            }
            else
            {
                int[] mber = new int[mc.Count];
                //遍历存储
                foreach (Match m in mc)
                {

                    mber[i] = int.Parse(m.Value);
                    i++;
                }
                //判断输入
                if (mc.Count == mc_symbol.Count + 1)
                {
                    //遍历计算
                    foreach (Match x in mc_symbol)
                    {
                        //第一次计算
                        if (!Pass)
                        {
                            switch (x.Value)
                            {
                                case "+": sum = mber[o] + mber[o + 1]; break;
                                case "-": sum = mber[o] - mber[o + 1]; break;
                                case "*": sum = mber[o] * mber[o + 1]; break;
                                case "/": sum = mber[o] / mber[o + 1]; break;
                            }
                        }
                        //超过第一次的计算
                        if (mc.Count > 2 && Pass)
                        {
                            switch (x.Value)
                            {
                                case "+": sum = sum + mber[o + 2]; break;
                                case "-": sum = sum - mber[o + 2]; break;
                                case "*": sum = sum * mber[o + 2]; break;
                                case "/": sum = sum / mber[o + 2]; break;
                            }
                            o++;
                        }
                        //sum = mber[o] + mber[o + 1];
                        Pass = true;
                    }
                    //输出计算值
                    label5.Text = sum.ToString();
                }
                else
                {
                    Console.WriteLine("\a输入错误!");
                }
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值