![](/img/trans.png)
[英]elapsed time using System.currentTimeMillis not working on android
[英]Calculate elapsed time with System.currentTimeMillis() in java
由于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但是当我打印getElapsedTime()
方法的结果时,它总是返回0。上面列出的代码是创建一个名为sortTime
的StopWatch
对象。
舍入可能有问题吗? 也许getElapsedTime()
方法本身存在问题?
System.out.println(sortTime.start()); // Start Timer
java.util.Arrays.sort(numbers); // Sort the array
System.out.println(sortTime.stop());// stop timer
System.out.println("the elapsed time is: " + sortTime.getElapsedTime());
}
} //end of main class (used for testing)
//Define Class
class StopWatch {
long startTime;
long endTime;
//Constructors
public StopWatch () {
}
//Methods
long start() {
long startTime = System.currentTimeMillis();
return startTime;
}
long stop() {
long endTime = System.currentTimeMillis();
return endTime;
}
long getElapsedTime() {
return (endTime - startTime);
}
}
例如,当我运行程序时,结果是:
1442877972466
1442877972469
经过的时间是:0
您正在创建与类变量同名的局部变量:
long start() {
long startTime = System.currentTimeMillis();
return startTime;
}
在此函数中使用long startTime
会使局部变量不同于名为startTime
的类成员。 更改为:
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
startTime
和endTime
已作为局部变量重新声明/阴影化,使实例字段保留其默认值(为0
)
long start() {
long startTime = System.currentTimeMillis();
return startTime;
}
long stop() {
long endTime = System.currentTimeMillis();
return endTime;
}
相反,请使用实例字段...
long start() {
startTime = System.currentTimeMillis();
return startTime;
}
long stop() {
endTime = System.currentTimeMillis();
return endTime;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.