我正试图为一个时间类编写一个for循环。如果输入的分钟超过60分钟,则从总分钟中减去60分钟,并将小时增加1,直到最后的分钟数小于60分钟为止。我在做如果像这样的声明
if (m > 59){
m = m - 60;
h++;
if (m > 59)... etc..但这并不能涵盖每一种情况,我觉得我应该知道如何为循环做这件事,但我无法弄清楚。任何帮助都将不胜感激,谢谢
发布于 2015-02-16 22:02:42
如果不需要使用循环来实现,那么您可以简单地执行
h = m / 60;
m = m % 60;我想这是最快也是最干净的方法。
不太确定你是否想在循环中做任何其他的事情。如果是这样的话,这对你不会有多大帮助。
编辑:在这里对它的工作原理做了一些解释。m / 60所做的被称为整数除法。它返回表达式的底部。例如,如果m = 131而不是m / 60 = 2。
第二个表达式使用模块化运算符。基本上,它在除法后找到了提醒。回到我们的例子,m % 60 = 11,因为m可以写成m = 60 * 2 + 11 = 131。有关更多信息,请参考维基。
发布于 2015-02-16 22:02:48
@Jendas对整个问题有一个很好的简单答案,但是如果您想保持这种格式,但使用循环解决问题,您可以将整个问题放在一个while循环中,而不是单独的if语句中:
while(m >59)
{
m = m - 60;
h++;
// do anything else you need to take care of
}
// finishing statements发布于 2015-02-16 22:08:12
h = 0;
while (m >= 60)
{
m = m - 60;
h++;
}您可能希望使用>= 60而不是59。此外,正如Jendas正确的建议,您可能需要对模量运算符'%‘进行一点研究。
https://stackoverflow.com/questions/28551070
复制相似问题