java - 向秒表类添加暂停和恢复方法

标签 java

如何向此类添加暂停和恢复方法? 当你暂停并且它已经暂停时,什么都不会发生。 此外,如果您在未暂停时恢复,则不会发生任何事情。

public class Stopwatch {
  private final long start;

  public Stopwatch() {
    start = System.currentTimeMillis();}

  public double elapsedTime() {
    long now = System.currentTimeMillis();
    return (now - start) / 1000.0;}

  public static void main(String[] args) {
    Stopwatch watch = new Stopwatch();
    double total = 0.0;

    for (int i = 0; i < 100000000; i++) 
      total += Math.random();

    double time = watch.elapsedTime();

    StdOut.println(time);

  }
}

最佳答案

为什么不保存一个变量 accumulatedTime 并在调用 pause() 方法时将累积时间附加到它

accumulatedTime += System.currentTimeMillis() - start / 1000.0;

当调用 resume() 时,您可以重置开始

start = System.currentTimeMillis();

然后 elapsedTime() 会将两者相加:

public double elapsedTime() {
   long now = System.currentTimeMillis();
   return ((now - start) / 1000.0) + accumulatedTime;
}

您还需要跟踪暂停状态 - 也许是一个 isPaused boolean 实例变量?然后您的 pause()/resume() 可以在适当的情况下做出响应 例如在 pause() 方法中:

if (isPaused) {
   return;   //do nothing
}

关于java - 向秒表类添加暂停和恢复方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983710/

相关文章:

java - 如何在 JavaFX 中锁定按钮的位置?

java - JFree图表时间序列刻度单位数据汇总

java - 获取与 extends ArrayList<T> 一起使用的类型的类名?

java - URL编码、空格和特殊字符(例如: "+"). 如何正确管理文件路径?

java - for 循环中遗漏了一个数字? ( java )

java - HashSet 包含自定义对象的问题

java - MouseEvent e 上 e.getSource() 的奇怪文本输出

java - 如何使用斯派克

java - 将一台机器迁移到另一台机器时,Post 方法不起作用

java - 如果 HTTP 请求之一失败,JMeter 会发送电子邮件