运算符重载的示例,计算两个时间的和

来源:互联网 发布:kbar软件不能用 编辑:程序博客网 时间:2024/06/07 23:39

回答一个运算符重载的问题,帮他写出了代码,记录备份

http://topic.csdn.net/u/20080728/23/38e0111e-5ce9-4af8-9622-4cf815a58805.html

需求

 

创建有以下数据成员的类:Time

标识符      类型
Hours    Integer
Minutes  Integer
Seconds  Integer

重载+操作符,用于将Seconds字段中包含的值加1.当Seconds的值等于60时,将Minutes的值加1,然后将Seconds的值置为0.
同样,当Minutes的值为60时,必须执行以下操作:
1.Minutes的值回复为0;
2.Seconds的值回复为0;
3.Hours的值增加1;

当Hours的值等于24时,所有三个字段的值必须回复为0.必须将这三个字段的值作为参数传递,将结果在控制台上输出.

代码

public class Complex    {        public int _sec = 0;        public int _min = 0;        public int _hour = 0;               public Complex(int sec, int min, int hour)        {            if (sec >= 60)            {                _sec = sec % 60;                _min += sec / 60;            }            else            {                _sec = sec;            }                        _min += min;            if (_min >= 60)            {                _hour += _min / 60;                _min = _min % 60;                            }                        _hour += hour;        }        public static Complex operator +(Complex c1, Complex c2)        {            int intSec = 0;            int intMin = 0;            int intHour = 0;            if (c1._sec + c2._sec >= 60)            {                intSec = (c1._sec + c2._sec )% 60;                intMin += (c1._sec + c2._sec) / 60;             }            if (c1._min + c2._min + intMin >= 60)            {                intHour +=( c1._min + c2._min + intMin )/ 60;                intMin = (c1._min + c2._min + intMin) % 60;                            }            intHour += c1._hour + c2._hour;            return new Complex(intSec, intMin, intHour);           // return c3;        }    }

 

 

调用代码如下

 

            Complex cc = new Complex(23, 34, 0);            Complex c1 = new Complex(37, 34, 0);            Complex c3 = cc + c1;            MessageBox.Show(c3._hour.ToString()+"/"+ c3._min.ToString()+"/"+c3._sec.ToString());
原创粉丝点击