我敢打赌,很多人需要一个由minutes : seconds : hundreds of seconds
组成的计时器。
显然,你从:
` public TimeGame(){
timer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
counter++;
}
});
timer.start();
}`
然后你需要调用一个改变这个计数器的方法:minutes : seconds : hundreds of seconds
。
`private String timeTransfer(){
minutes = counter/6000;
counter = counter - (minutes*6000);
seconds = counter/100 ;
counter = counter - (seconds*100);
milliseconds = counter;
return minutes + " : " + seconds + " : " + miliseconds;
}`
但我的方法中有一个错误。一旦达到100毫秒,它就会跳回到0。
通常它必须放0:1:0
,但它会跳回0:0:0
。
所有变量都在类中声明为私有。
所以我的问题是有人知道更好的方法吗?
答案 0 :(得分:5)
建议:
答案 1 :(得分:4)
以下是此代码的一种形式,多年来被许多人写了很多次:
private String timeTransfer(){
minutes = counter/6000;
seconds = (counter % 6000) /100 ;
milliseconds = counter % 100;
return minutes + " : " + seconds + " : " + milliseconds;
}
另一张海报评论说,这种方式使用计时器是不准确的。如果你只是运行这个东西几分钟,错误不会加起来太多。如果您在几分钟内做得更多,则需要使用系统时间来处理此问题。
首先,在初始化计数器时存储当前时间:
long startTime = System.currentTimeMillis();
然后,您会在从timeTransfer()
if (milliseconds < 10) {
counter = (System.currentTimeMillis() - start) / 10;
}
答案 2 :(得分:0)
您的方法timeTransfer()修改类成员变量counter
。将其复制到方法开头的局部变量并对其执行计算,例如:
long counter = this.counter;