| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 3496 人关注过本帖
标题:请问如何用c#做一个计算器
只看楼主 加入收藏
本帖由 zhulei1978 于 2020-3-2 12:04 移动
con2008
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-2-29
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
请问如何用c#做一个计算器
我是小白,请问如何用c#做一个计算器?
搜索更多相关主题的帖子: c# 计算器 
2020-02-29 21:12
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:463
专家分:621
注 册:2007-9-8
收藏
得分:20 
多年前设计的可参https://blog.bccn.net/xianfajushi/66996
2020-03-02 17:57
tzjtzj18
Rank: 2
等 级:论坛游民
帖 子:14
专家分:40
注 册:2013-5-9
收藏
得分:0 
程序代码:
using System;
using System.Collections.Generic;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string expression;
            Console.Write("输入算式:");
            expression = Console.ReadLine();
            Console.WriteLine(new Calculator().Calculate(expression));
        }


        public class Calculator
        {
            public Calculator()
            {
                _OptStack = new Stack<char>();
                _SuffixStack = new Stack<float>();
            }
            private Stack<char> _OptStack;
            private Stack<float> _SuffixStack;
            public float Calculate(string expression)
            {
                string lastNum = string.Empty;
                for (int i = 0; i < expression.Length; i++)
                {
                    if (char.IsNumber(expression[i]) || expression[i].Equals('.'))
                    {
                        lastNum += expression[i];
                    }
                    else
                    {
                        if (lastNum != string.Empty)
                        {
                            Merger(float.Parse(lastNum));
                            lastNum = string.Empty;
                        }
                        AddOpt(expression[i]);
                    }
                }
                if (lastNum != string.Empty)
                {
                    Merger(float.Parse(lastNum));
                }
                while (_OptStack.Count > 0)
                {
                    Merger(_OptStack.Pop());
                }
                return _SuffixStack.Pop();
            }
            private void AddOpt(char opt)
            {
                if (_OptStack.Count == 0)
                {
                    _OptStack.Push(opt);
                    return;
                }
                if (opt.Equals(')'))
                {
                    while (!_OptStack.Peek().Equals('('))
                    {
                        Merger(_OptStack.Pop());
                    }
                    _OptStack.Pop();
                    return;
                }
                char tempOpt = _OptStack.Peek();
                if ((opt.Equals('-') || opt.Equals('+')) &&
                    (tempOpt.Equals('*') || tempOpt.Equals('/')))
                {
                    while (_OptStack.Count > 0)
                    {
                        Merger(_OptStack.Pop());
                    }
                }
                _OptStack.Push(opt);
            }
            private void Merger(float exp)
            {
                _SuffixStack.Push(exp);
            }
            private void Merger(char exp)
            {
                float num1 = _SuffixStack.Pop();
                float num2 = _SuffixStack.Pop();
                float result = 0;
                switch (exp)
                {
                    case '+':
                        result = num2 + num1;
                        break;
                    case '-':
                        result = num2 - num1;
                        break;
                    case '*':
                        result = num2 * num1;
                        break;
                    case '/':
                        result = num2 / num1;
                        break;
                }
                _SuffixStack.Push(result);
            }
        }
    }
}
2020-03-17 13:30
zj891218
Rank: 2
等 级:论坛游民
帖 子:8
专家分:50
注 册:2017-7-19
收藏
得分:0 
可以百度Microsoft的计算器源代码
2020-03-18 22:08
快速回复:请问如何用c#做一个计算器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054745 second(s), 10 queries.
Copyright©2004-2020, BCCN.NET, All Rights Reserved