免责声明:初学者问题。
在Java练习中,我们被要求使用System.currentTimeMillis()获取当前时间(以毫秒为单位),然后通过除以1000获得秒数,然后使用模数运算符显示秒数,即数字%60。然后我们被要求显示分钟/ 60,然后再显示%60。
有人可以用Layman的术语解释为什么在这个简单的程序中使用%以及该程序如何工作?我知道SO上已经有关于模数运算的问题。有效,但这是一个更实际的案例,似乎没有在这里讨论。谢谢!
public class Test {
public static void main(String[] args) {
long totalMilliseconds = System.currentTimeMillis();
long totalSeconds = totalMilliseconds / 1000;
long currentSecond = totalSeconds % 60;
long totalMinutes = totalSeconds / 60;
long currentMinute = totalMinutes % 60;
long totalHours = totalMinutes / 60;
long currentHour = totalHours % 24;
System.out.println("Current time is " + currentHour + ":" + currentMinute + ":" + currentSecond);
}
}
答案 0 :(得分:0)
模数运算符计算整数除法的余数。
让我们举一个例子。假设经过了127秒。这需要2分7秒,对吗?你是如何计算的?
算法的其余部分在数小时内应用相同的原理。也许您可以通过将所有中间结果打印到控制台来更好地理解事物。但实际上,它只是算术。
答案 1 :(得分:0)
给定a>=0
和b>0
a % b
是a
除b
之后的剩余部分。
这意味着如果a >= n*b
代表自然数n
a % b == (a - n*b) % b
让我们说你有359秒(= 5分59秒),想要找出分钟中的秒数。
此处使用 b = 60
,因此结果与从a = 359
中减去完整分钟的最大数量相同,可以减去而不会使结果为负数。< / p>
在这种情况下,我们有
359 % 60 == (359 - 5 * 60) % 60
== 59 % 60
== 59
小时/分钟和天/小时类似。