我需要以HHMMSS
的格式存储整数的时间值。这个时间值每秒递增一次(基本上是一个自定义时钟)。然而,由于整数自然是基于10,我必须实现一个大的繁琐的逻辑,提取每个数字并在一分钟内检查60秒,一小时60分钟和一天24小时。我想知道是否有一些聪明的方法可以做到这一点,没有一个巨大的if / else if chunk。
答案 0 :(得分:2)
您可以使用modulus operator选出单秒计数器的每个组件:
int totalSeconds;
...
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = (totalSeconds / 3600);
然后你可以只增加一个秒计数器并提取每个组件。
答案 1 :(得分:1)
我的建议是实现一个CustomClock类,它看起来像:
public class CustomClock {
private int hour;
private int minute;
private int second;
public CustomClock(int hour, int minute, int second) {
this.hour = hour;
// ...
}
public void increment() {
second = second + 1)%60;
if (second == 0) minute = (minute + 1)%60;
if (minute == 0) hour = (hour + 1)%24;
}
}
因此利用mod运算符(%)来计算任意基数。