标题:自己写了个 加,减,乘,除,的小程序,!大家帮我看看有什么地方需要改进的 ...
只看楼主
仲子陵
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-6-1
结帖率:90%
已结贴  问题点数:20 回复次数:3 
自己写了个 加,减,乘,除,的小程序,!大家帮我看看有什么地方需要改进的?

namespace 练习
{
    class Program
    {
        public double num1 { get; set; }     //运算数字1
        public double num2 { get; set; }     //运算数字2
        public double num3 { get; set; }     //运算结果
        public string fuHao { get; set; }    //运算符号
        //定义委托  下面的委托方法,我觉要不要都无所谓。
        public delegate void YunSuanDelegate(string fuHao);   
        public void FuHao(string fuHao, YunSuanDelegate yunSuan)
        {
            yunSuan(fuHao);
        }
        //加法
        public void JiaFa(string fuHao)
        {
            num3 = num1 + num2;
           
        }
        //减法
        public void JianFa(string fuHao)
        {
            num3 = num1 - num2;
        }
        //乘法
        public void chengFa(string fuHao)
        {
            num3 = num1 * num2;
        }
        //除法
        public void chuFa(string fuHao)
        {
            do       //当输入的除数为零的时候进入循环
            {
                if (num2 == 0)   
                {
                    Console.WriteLine("除数不能为零(0),请重新输入:");
                    num2 = double.Parse(Console.ReadLine());
                }
            } while (num2 == 0);    //只要输入的除数为零(0)时就继续循环

            num3 = num1 / num2;
        }


        static void Main(string[] args)
        {
            Program program = new Program();
            try
            {
                Console.WriteLine("输入第一个运算的数:");
                program.num1 = double.Parse(Console.ReadLine());
                Console.WriteLine("请选择运算符号:+.- * /");
                program.fuHao = Console.ReadLine();
                Console.WriteLine("请输入第二个运算的数:");
                program.num2 = double.Parse(Console.ReadLine());
                switch (program.fuHao)
                {
                    case "+":
                        program.JiaFa("+");
                        break;
                    case "-":
                        program.JianFa("-");
                        break;
                    case "*":
                        program.chengFa("*");
                        break;
                    case "/":
                        program.chuFa("/");
                        break;
                    default:
                        Console.WriteLine("你的输入的运算符号有误!!");
                        break;
                }

                Console.WriteLine("运算的结果是:" + program.num3);
                Console.ReadLine();
            }
            catch (DataException dataException)
            {
                Console.WriteLine(dataException.ToString());
            }
        }
    }
}
我自学的C#,刚学到委托这,书上说使用委托可以避免大量的使用if-else(switch)语句,程序可以具有更好的可扩展性,,,所以我就试着写了这个小程序
可是总觉得委托用不用好像都一样,感觉有点多余。大家帮看看还有什么可以改进的,给点意见吧!!!谢谢
搜索更多相关主题的帖子: public double class 
2011-09-24 21:08
刘杰明
Rank: 8Rank: 8
来 自:山东大学威海校区
等 级:蝙蝠侠
帖 子:155
专家分:872
注 册:2011-6-20
得分:10 
程序代码:
        public void FuHao(string fuHao, YunSuanDelegate yunSuan)
        {
            yunSuan(fuHao);
        }
        //加法
        public void JiaFa(string fuHao)
        {
            num3 = num1 + num2;
          
        }
        //减法
        public void JianFa(string fuHao)
        {
            num3 = num1 - num2;
        }
        //乘法
        public void chengFa(string fuHao)
        {
            num3 = num1 * num2;
        }
        //除法
        public void chuFa(string fuHao)
        {
            do       //当输入的除数为零的时候进入循环
            {
                if (num2 == 0)   
                {
                    Console.WriteLine("除数不能为零(0),请重新输入:");
                    num2 = double.Parse(Console.ReadLine());
                }
            } while (num2 == 0);    //只要输入的除数为零(0)时就继续循环

            num3 = num1 / num2;
        }

不用定义那么多类来实现简单的加减乘删除,一个类然后传参,if...else 就搞定了,你说呢?

______________________________加油__!__!___!
2011-09-26 14:33
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:10 
如果能把学到的面向对象思想 设计模式应用进去就更好了 单纯的计算没啥意思

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-09-26 17:30
仲子陵
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-6-1
得分:0 
面向对象还有待学习,,谢谢你们的意见
2011-09-26 23:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-350777-1-1.html




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

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