110,533
社区成员
发帖
与我相关
我的任务
分享
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, int i)
{
return new Complex(c1._sec+i, c1._min, c1._hour);
// return c3;
}
}
Complex com = new Complex(50, 58, 0);
private void button2_Click(object sender, EventArgs e)
{
com += 1;
this.button1.Text = com._hour.ToString() + "/" + com._min.ToString() + "/" + com._sec.ToString();
}
using System;
using System.Threading;
/// <summary>
/// 第四章 作业题2 - 操作符重载
/// </summary>
public class Time
{
public int _sec = 0;
public int _min = 0;
public int _hour = 0;
public Time(int sec, int min, int hour)
{
//判断时分秒是否为负数;
//到60秒时,秒数清0,分钟数+1;到60分时,分钟数清0,小时+1;到24小时后,时分秒都清零;
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;
if (_hour >= 24)
{
_hour = _hour % 24;
}
}
// 声明要重载的运算符 (+)、
// 可相加的类型:一个 Time 对象,一个整数
// 返回类型 (Time):
public static Time operator +(Time c1, int i)
{
return new Time(c1._sec + i, c1._min, c1._hour);
}
}
public class Tests
{
public static void Main()
{
//初始化
Time com = new Time(55, 58, 23);
Console.WriteLine(com._hour.ToString() + "/" + com._min.ToString() + "/" + com._sec.ToString());
//将当前线程阻止两秒后再开始循环
Thread.Sleep(2000);
//循环测试,秒数每次加1
for (; com._hour < 200; com+=1)
{
Console.WriteLine(com._hour.ToString() + "/" + com._min.ToString() + "/" + com._sec.ToString());
//将每次循环的间隔设置为200毫秒
Thread.Sleep(200);
}
}
}
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());
调用方法如下:按你的需求重写运算符++
//下面是溢出值的测试
Complex com = new Complex(70, 80, 12);
//下面是24小时的清零测试
Complex com = new Complex(50, 58, 23);
//你初始化选上面一种就行了
private void button2_Click(object sender, EventArgs e)
{
this.button2.Text = com._hour.ToString() + "/" + com._min.ToString() + "/" + com._sec.ToString();
Application.DoEvents();
Thread.Sleep(3000);
for (; com._hour < 200; com++)
{
this.button2.Text = com._hour.ToString() + "/" + com._min.ToString() + "/" + com._sec.ToString();
Thread.Sleep(100);
Application.DoEvents();
}
// dtUserBindingSource.DataSource = ds2;
// dtUserBindingSource.Add(ds);
//dtUserBindingSource.Add(ds2);
//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());
}
代码:已经帮你判断了是不是负数,到24小时清零,都已经判断过了!如果超过值会自动累加的!
[code=C#] public class Complex
{
public uint _sec = 0;
public uint _min = 0;
public uint _hour = 0;
public Complex(uint sec, uint min, uint 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;
if (_hour >= 24)
{
_hour = _hour %24;
}
}
public static Complex operator ++(Complex c1)
{
return new Complex(c1._sec+1, c1._min, c1._hour);
// return c3;
}
}
public Complex(int sec, int min, int hour)
{
if (sec >= 60)
{
_sec = 0;
_min += 1;
if (_min >= 60)
{
_min = 0;
_hour += 1;
if (_hour >= 24)
{
_sec = 0;
_min = 0;
_hour = 0;
}
}
}
else
{
_sec = sec;
}
if (min >= 60)
{
_min = 0;
_hour += 1;
if (_hour >= 24)
{
_sec = 0;
_min = 0;
_hour = 0;
}
}
else
{
_min = min;
}
if (hour >= 24)
{
_sec = 0;
_min = 0;
_hour = 0;
}
else
{
_hour = hour;
}
}