1

わかりました。私はJavaを初めて使用し、宿題を完了しようとしていますが、クラスでオブジェクトが機能していません。(間違った用語を使用している場合はご容赦ください。ここでは初心者です)

だから私は2周を記録する基本的なストップウォッチプログラムを作っています。私は1周目を作成するところまで来ました、そしてそれは素晴らしい働きをします。次に、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クラスimです。

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 に答える