秒表Java代码始终返回0

时间:2017-05-03 09:51:38

标签: java

我有一个简单的Java秒表代码,但由于某种原因,它总是将时间设为0。 我认为我的变量和不正确的东西......但我认为它与在main函数中调用方法有关?我不确定并完全失去了诚实......

import java.util.Scanner;
public class Stopwatch{
  private float startTime;
  private float endTime;

  public float start(){
    startTime = System.currentTimeMillis();
  }
  public float end(){
    endTime = System.currentTimeMillis();
  }
  public float elapsedTime(){
    float elapsedTime = startTime - endTime;
    System.out.println(elapsedTime);
  }
  public float getStartTime(){
    System.out.println(startTime);
  }
  public float getEndTime(){
    System.out.println(endTime);
  }
  public static void main(String[] args){
    String readString;
    Scanner scr1 = new Scanner(System.in);
    System.out.println("Press Enter to Begin the Stopwatch");
    if (scr1.hasNextLine())
      Stopwatch.start();
    System.out.println("Press Enter to Stop the Stopwatch");
    Scanner scr2 = new Scanner(System.in);
    if (scr2.hasNextLine())
      Stopwatch.end();
    System.out.println("Elapsed Time is: " + Stopwatch.elapsedTime());

  }
 }

2 个答案:

答案 0 :(得分:0)

由于Stopwatch类不是静态的,因此在能够使用其方法之前,需要实例化该类的元素。

main()的开头,在变量声明期间,添加Stopwatch s = new Stopwatch,然后将这些方法用作s.start()s.end()等。

答案 1 :(得分:0)

首先,代码甚至没有编译。如果您使用staticmain方法调用方法,则被调用的方法也必须为static。或者,创建Stopwatch的实例并在创建的实例上调用方法。然后,您必须使用long而不是float。请参阅下面代码的工作版本。

import java.util.Scanner;

public class Stopwatch {
    private static long startTime;
    private static long endTime;

    public static void start() {
        startTime = System.currentTimeMillis();
    }

    public static void end() {
        endTime = System.currentTimeMillis();
    }

    public static float elapsedTime() {
        long elapsedTime = endTime - startTime;
        System.out.println(elapsedTime);
        return elapsedTime;
    }

    public static void getStartTime() {
        System.out.println(startTime);
    }

    public static void getEndTime() {
        System.out.println(endTime);
    }

    public static void main(String[] args) {
        Scanner scr1 = new Scanner(System.in);
        System.out.println("Press Enter to Begin the Stopwatch");
        if (scr1.hasNextLine()) {
            Stopwatch.start();
        }
        System.out.println("Press Enter to Stop the Stopwatch");
        Scanner scr2 = new Scanner(System.in);
        if (scr2.hasNextLine()) {
            Stopwatch.end();
        }
        System.out.println("Elapsed Time is: " + Stopwatch.elapsedTime());

    }
}