我有一个简单的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());
}
}
答案 0 :(得分:0)
由于Stopwatch类不是静态的,因此在能够使用其方法之前,需要实例化该类的元素。
在main()
的开头,在变量声明期间,添加Stopwatch s = new Stopwatch
,然后将这些方法用作s.start()
,s.end()
等。
答案 1 :(得分:0)
首先,代码甚至没有编译。如果您使用static
等main
方法调用方法,则被调用的方法也必须为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());
}
}