对于时间类的循环

For Loops for a Time Class

本文关键字:循环 时间 于时间      更新时间:2023-10-16

我正试图为时间类编写一个for循环。其中,如果输入的分钟数超过60,则从总分钟数中减去60,小时数增加1,直到最后剩下的分钟数小于60。我在做像这样的陈述

if (m > 59){
    m = m - 60;
    h++;      
    if (m > 59)... etc..

但这并不是涵盖所有的情况,我觉得我应该知道如何为循环做这件事,但我不明白。如有任何帮助,我们将不胜感激,感谢

如果不必使用循环来实现,您可以简单地执行

h = m / 60;
m = m % 60;

我想这是最快、最干净的方法。

不确定是否要在循环中执行其他操作。如果是这样的话,这对你没有多大帮助。

编辑:以下是它如何工作的一些解释。m / 60的作用称为整数除法。它返回表达式的floor。例如,如果m = 131m / 60 = 2

第二个表达式使用模运算符。基本上,它在分裂后找到了提醒。回到我们的例子,m % 60 = 11,因为m可以写成m = 60 * 2 + 11 = 131。欲了解更多信息,请访问wiki。

@Jendas对整个问题有一个很好的简单答案,但如果你想保持这种格式,但用循环解决问题,你可以把整个事情放在while循环中,而不是单独的if语句:

while(m >59)
{
    m = m - 60;
    h++;
    // do anything else you need to take care of
}
// finishing statements
h = 0;  
while (m >= 60)
{
    m = m - 60;
    h++;
}

您可能希望使用>=60而不是59。此外,正如Jendas正确地建议的那样,您可能需要研究一下模运算符"%"