Java 如何将整数拆分为字符串并按秒/分/小时自动转换

Java 如何将整数拆分为字符串并按秒/分/小时自动转换,java,string,int,converter,Java,String,Int,Converter,我已经在GUI上设置并显示了计时器 我想让程序节省时间并加载它。我成功地做到了,但是, 我想在程序启动时加载上一次 ms是毫秒,如果超过1000,它会将其转换为1秒,并再次获得0的值。我已经创建了一个秒(毫秒计时器)作为(分数)来显示,而不是将其更改为0。直到计时器停止,分数才会重置 我想获取分数并提取,以获得以下值: 分钟/秒/毫秒 我曾尝试将其提取或除以不同的数字,但这对我来说太难了:/ 简单地说,我想自动检测分数的长度,获取字符串上的分、秒和毫秒,并在JLabel上显示它 我可以创建其他整

我已经在GUI上设置并显示了计时器

我想让程序节省时间并加载它。我成功地做到了,但是, 我想在程序启动时加载上一次

ms
是毫秒,如果超过1000,它会将其转换为1秒,并再次获得0的值。我已经创建了一个秒(毫秒计时器)作为(分数)来显示,而不是将其更改为0。直到计时器停止,分数才会重置

我想获取分数并提取,以获得以下值:

分钟//毫秒

我曾尝试将其提取或除以不同的数字,但这对我来说太难了:/

简单地说,我想自动检测分数的长度,获取字符串上的分、秒和毫秒,并在
JLabel
上显示它

我可以创建其他整数,如
milliback
secondsBackup
minuteBackup
。 并将它们分别传递到毫秒/秒/分钟。但如果有能力的话,我想这样做

public void beginTimer() {

            score++;
            ms++;

            if(ms==1000) {

                ms = 0;
                s++;

                if(s>59) {

                    s = 0;
                    m++;

                    if(m>59) {

                        timer.cancel();

                    }
                }

            }

            lblTimer.setText(displayTimer());

        }
并且DisplayTimer具有:

public String displayTimer() {
            return String.format("%02d:%02d:%03d", m, s, ms);
        }

您没有说明如何更新该方法。如果您正在调用
Thread.sleep
,应格外小心。有更好的方法。但使用您的代码:

// bad use of static but once you'll get it working, change it
static long s = 1;
static long m = 1;
static long ms = 1;

// the method is not beginTimer but updateTimer and goes inside a
// loop or something which calls it agan and again
public void updateTimer() {

        if(ms==1000L) {                  
            ms = 0;
            s++;  

            if(s==60L) {                      
                s = 0;
                m++; 

                if(m==60L) {                          
                    timer.cancel();                         
                }
            }                   
        }               
        lblTimer.setText(displayTimer());               
    }
如何从
得分计算分钟(m)、秒(s)和毫秒(ms):

ms = score; 
s = ms / 1000; // integer div
ms = ms % 1000; // remainder
m = s / 60; // integer div
s = s % 60; // remainder

最好使用Java
DateTime API
。看一下我使用util包中的计时器。这里是cod:timer=newtimer();TimerTask TimerTask=new TimerTask(){@Override public void run(){beginTimer();}};timer.scheduleAtFixedRate(timerTask,1,1);美好的请记住,
TimerTask
不能保证实时执行。例如,无法确保在精确的毫秒内更新计数器。但从长远来看,它肯定会更新正确的次数。。运行最精确计时器的最佳方式是什么?我认为,要在屏幕上重新绘制循环计时器,应该避免毫秒,并直接安排到秒。如果操作系统没有被其他进程过载,那就足够了。