1

我需要以整数形式存储时间值,格式为HHMMSS. 此时间值每秒递增(基本上是自定义时钟)。但是,由于整数自然是从 10 开始的,所以我必须实现一个大而繁琐的逻辑,提取每个数字并检查每分钟 60 秒、每小时 60 分钟和每天 24 小时。我想知道是否有一些聪明的方法可以在没有大量 if/else if 块的情况下做到这一点。

4

2 回答 2

2

您可以使用模数运算符来挑选单个秒计数器的每个组件:

int totalSeconds;
...
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = (totalSeconds / 3600);

然后你可以只增加一个秒计数器并提取每个组件。

于 2012-10-14T01:51:39.160 回答
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 运算符 (%) 来计算任意基数。

于 2012-10-14T01:48:34.117 回答