0

这比较了使用 Math.sqrt 和牛顿法求平方根所需的时间。我应该为此添加允许客户端停止并重新启动秒表的方法,但我不确定如何执行此操作。不幸的是,搜索其他问题并没有带来太多的运气。因为这是一门课,我不希望给我直接的答案,但是一些建议,或者一个关于如何实现我的目标的教程的链接会很好。谢谢你的帮助。

public class Stopwatch 
    {
private final long start;

public Stopwatch()
{ start = System.currentTimeMillis(); }

public double elapsedTime()
{
    long now = System.currentTimeMillis();
    return (now - start) / 1000.0;
}

public static void main(String[] args)
{
    int N = Integer.parseInt(args[0]);

    double totalMath = 0.0;
    Stopwatch swMath = new Stopwatch();
    for (int i = 0; i < N; i++)
        totalMath += Math.sqrt(i);
    double timeMath = swMath.elapsedTime();

    double totalNewton = 0.0;
    Stopwatch swNewton = new Stopwatch();
    for (int i = 0; i < N; i++)
        totalNewton += Newton.sqrt(i);
    double timeNewton = swNewton.elapsedTime();

    System.out.println(totalNewton/totalMath);
    System.out.println(timeNewton/timeMath);
}

}
4

2 回答 2

0

很高兴你能诚实地说这是为了一堂课,你不想给你答案。这是学习的良好开端:)

以下是我将如何处理任务:

首先,我只是定义缺少的方法。然后,我将开始编写(作为内联注释)这些方法应该做什么。重置秒表是什么意思,停止是什么意思?您可以将其与“现实生活”秒表相提并论。这应该让您开始思考,一旦您定义了规则,就应该可以将其转换为代码。

也许这比你预期的要抽象一点,但我相信你会以正确的态度到达那里,就像你看起来的那样!祝你好运!

于 2013-03-26T21:59:24.790 回答
0

创建另一个名为 long 类型的属性timeElapsedUntilLastStop

创建一个名为 stop 的方法,该方法与 elapsedTime 完全相同,但不返回添加到当前值的timeElapsedUntilLastStop.

restart()方法应该初始化应该足够的开始变量。

于 2013-03-26T21:53:51.250 回答