创建计时器的程序,并使用它来测量创建和排序数组所需的时间。我在日食中获得了红色亮点。评论中的进一步解释。
public class StopWatch {
private double startTime;
private double endTime;
public void start() {
startTime = System.currentTimeMillis();
}
public void stop() {
endTime = System.currentTimeMillis();
}
public double getElapsedTime(endTime, startTime) {
return endTime - startTime;
}
}
测试类
import java.util.Arrays;
public class TestStopWatch {
Stopwatch.start();
int[] array = new int[1000000];
{
for (int i = 0; i < 999999; i++)
{
array[i] = (int) Math.random() * 100;
}
Arrays.sort(array);
}
Stopwatch.stop();
System.out.println(getElapsedTime());
}
答案 0 :(得分:2)
您无法直接在TestStopWtach类中调用start()
,stop
和getElapsedTime()
方法。您需要有一个StopWatch对象来在不同的类中调用这些方法。
在TestStopWatch类中必须有一个public static void main(String args [])方法或其他方法,你可以通过它调用这些东西......
此外,您需要使用StopWatch Class对象调用方法调用...
接下来,您需要注意这两个类都位于同一个包下以调用它们的方法,如下面的代码所示......
StopWatch类必须如下所示: -
public class StopWatch {
private double startTime;
private double endTime;
public long start() {
startTime = System.currentTimeMillis();
return startTime;
}
public long stop() {
endTime = System.currentTimeMillis();
return endTime;
}
public double getElapsedTime(endTime, startTime) {
return endTime - startTime;
}
}
此外,通过更改方法start()和stop()的返回类型,在StopWatch类中进行一些更改。
TestStopWatch类必须看起来像: -
import java.util.Arrays;
public class TestStopWatch {
public static void main(String args[]){
StopWatch sw=new StopWatch();
long p=sw.start(); // trying to call the start method in the previous class
// code to create and sort array
long q=sw.stop(); //stop method in previous class
// call getElapsedtime and print
System.out.println(sw.getElapsedTime((double)q,(double)p));
}
}
答案 1 :(得分:1)
这将解决它:
TestStopWatch 类更改:
public static void main(String[] args) {
StopWatch watch = new StopWatch();
watch.start();
watch.stop();
System.out.println(watch.getElapsedTime());
}
秒表类更改:
public double getElapsedTime() {
return endTime - startTime;
}
答案 2 :(得分:1)
首先,在TestStopWatch类中,您应该创建一个像这样的主方法
public void main(String[] args) {
// your code here
}
然后,您需要像这个StopWatch stopWatch = new StopWatch();
一样实例化StopWatch类,并分别调用stopWatch.start(),stopWatch.stop()和stopWatch.getElapsedTime()。此外,您应该从getElapsedTime中删除这两个参数,因为它们没有被使用:)
有点无关,你的StopWatch类本身有一些小问题。首先,没有必要将startTime和endTime存储为双精度数。由于它们是整数,因此存储它们的最佳方式是整数格式(在本例中为long)。
此外,System.currentTimeMillis()用于时间(如时间和日期),不应该用于此类秒表,因为系统会定期更正System.currentTimeMillis(),因此时钟更多准确。相反,请使用没有这些修正的System.nanoTime()。
答案 3 :(得分:1)
首先,你在&#39; TestStopWatch&#39;内创建一个方法。然后通过创建对象来调用其他类方法。
public class StopWatch {
private double startTime;
private double endTime;
public double start() {
startTime = System.currentTimeMillis();
return startTime;
}
public double stop() {
endTime = System.currentTimeMillis();
return endTime;
}
public double getElapsedTime(double endTime, double startTime) {
return endTime - startTime;
}
}
第二堂课
import java.util.Arrays;
public class TestStopWatch {
public void measureTime(){
StopWatch stopWatch = new StopWatch();
double startTime = stopWatch.start(); //trying to call the start method in the previous class
//code to create and sort array
double endTime = stopWatch.stop(); //stop method in previous class
System.out.println(getElapsedTime(startTime,endTime)); //call getElapsedtime and print
}
}