首先我想说的是,我并不是在找一个人把整个程序交给我一个装好的蝴蝶结的盒子。我老老实实地想要了解和学习。我的任务是以下列格式询问用户两次输入时间:小时,分钟和秒。然后,我将这些时间加在一起或从另一个中减去一个。预计时间1>> =时间2.我不允许将所有时间转换为秒,然后将其转换回来。我也不允许使用循环或if语句。我已经完成了我的添加,但这是我坚持的减法。这是我的补充:
Time addTime(Time t1, Time t2) {
int h, m, s, cm, ch;
s = (t1.s + t2.s)%60;
cm = (t1.s + t2.s)/60;
m = ((t1.m + t2.m) + cm)%60;
ch = ((t1.m + t2.m) + cm)/60;
h = (t1.h + t2.h) + ch;
return new Time(h,m,s);
现在我需要带走(例如(1小时,10分钟,50秒) - (0小时,0分钟,75秒)=(1小时,9分钟,35秒))我只是没有看到如何做到限制虽然我承认自己真的很陌生,但还有很多东西需要学习。如果有人可以帮助我,或者只是指出我做正确的减法方向,我会非常感激。
答案 0 :(得分:0)
你通常有正确的方法,但是因为你试图同时做两件事而感到困惑。我建议你先做算术,不要注意结果的小时,分钟和秒字段是否“标准化”,然后将它们标准化。
所以对你的例子
01 : 10 : 50
- 00 : 00 : 75
首先进行减法,给出
01 : 10 : -25
然后进行归一化以将值恢复到适当的范围,处理该点的进位。
请注意,您正确使用了模数(%
)和整数除法,但要特别注意%
对负数的行为方式。请参阅语言参考以确保您理解它。