定时器测量数组排序

时间:2014-11-16 05:16:02

标签: java class

创建计时器的程序,并使用它来测量创建和排序数组所需的时间。我在日食中获得了红色亮点。评论中的进一步解释。

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());
}

4 个答案:

答案 0 :(得分:2)

您无法直接在TestStopWtach类中调用start()stopgetElapsedTime()方法。您需要有一个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

    }
}