Java 如何将整数拆分为字符串并按秒/分/小时自动转换
我已经在GUI上设置并显示了计时器 我想让程序节省时间并加载它。我成功地做到了,但是, 我想在程序启动时加载上一次Java 如何将整数拆分为字符串并按秒/分/小时自动转换,java,string,int,converter,Java,String,Int,Converter,我已经在GUI上设置并显示了计时器 我想让程序节省时间并加载它。我成功地做到了,但是, 我想在程序启动时加载上一次 ms是毫秒,如果超过1000,它会将其转换为1秒,并再次获得0的值。我已经创建了一个秒(毫秒计时器)作为(分数)来显示,而不是将其更改为0。直到计时器停止,分数才会重置 我想获取分数并提取,以获得以下值: 分钟/秒/毫秒 我曾尝试将其提取或除以不同的数字,但这对我来说太难了:/ 简单地说,我想自动检测分数的长度,获取字符串上的分、秒和毫秒,并在JLabel上显示它 我可以创建其他整
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
最好使用JavaDateTime API
。看一下我使用util包中的计时器。这里是cod:timer=newtimer();TimerTask TimerTask=new TimerTask(){@Override public void run(){beginTimer();}};timer.scheduleAtFixedRate(timerTask,1,1);美好的请记住,TimerTask
不能保证实时执行。例如,无法确保在精确的毫秒内更新计数器。但从长远来看,它肯定会更新正确的次数。。运行最精确计时器的最佳方式是什么?我认为,要在屏幕上重新绘制循环计时器,应该避免毫秒,并直接安排到秒。如果操作系统没有被其他进程过载,那就足够了。