1

好的,我对 Java 很陌生,我正在尝试完成家庭作业,但我的对象在我的课堂上不起作用。(如果我使用了错误的术语,请原谅我,这里是新手)

所以我正在制作一个记录 2 圈的基本秒表程序。我已经到了创造第一圈的地步,而且效果很好。然后,当我调用 timer.reset() 对象来重置秒表时,它显示的时间与第一圈相同。为什么我的 timer.reset() 不起作用?

public class StopWatch
{

    /**
     * This method  
     *
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub

        Scanner input = new Scanner(System.in);
        System.out.println("Start stopwatch [press s]: ");
        System.out.println("Stop  stopwatch [press q]: ");

        Timer timer = new Timer();
        input.next();
        timer.start();

        input.next();
        timer.stop();

        int elapsedTime = timer.getElapsedTime();

        System.out.print("Elapsed time: ");
        System.out.print(elapsedTime);
        System.out.println(" milliseconds");

        timer.reset();

        input.next();
        timer.start();

        input.next();
        timer.stop();

        System.out.print("Elapsed time: ");
        System.out.print(elapsedTime);
        System.out.println(" milliseconds");

    }

}

这是我在我的程序中使用的 timer.java 类。

public class Timer {
  private long start;
  private long stop;
  private int elapsedTime;
  public Timer() {
  }
  public void start() {
    if (this.start == 0 && this.stop == 0)
      this.start = System.currentTimeMillis();
  }
  public void stop() {
    if (this.start > 0 && this.stop == 0) {
      this.stop = System.currentTimeMillis();
      this.elapsedTime = (int) (stop - start);
    }
  }
  public int getElapsedTime() {
    return this.elapsedTime;
  }
  public void reset() {
    this.start = 0;
    this.stop = 0;
    this.elapsedTime = 0;
  }
}
4

2 回答 2

10

您错过了再次阅读经过的时间:

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    System.out.println("Start stopwatch [press s]: ");
    System.out.println("Stop  stopwatch [press q]: ");

    Timer timer = new Timer();
    input.next();
    timer.start();

    input.next();
    timer.stop();

    System.out.println("Elapsed time: "+ timer.getElapsedTime()+" milliseconds");

    timer.reset();

    input.next();
    timer.start();

    input.next();
    timer.stop();

    System.out.println("Elapsed time: "+ timer.getElapsedTime()+" milliseconds");
}
于 2013-01-19T21:24:21.450 回答
0

重置后执行的步骤与重置之前执行的步骤相同。这样,您在重置前立即显示的结果与重置后的结果以及重复的步骤相同。尝试重置后立即打印结果,您将看到更改。

于 2013-01-19T21:25:03.507 回答