Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java中的System.currentTimeMillis()计算经过的时间_Java - Fatal编程技术网

使用java中的System.currentTimeMillis()计算经过的时间

使用java中的System.currentTimeMillis()计算经过的时间,java,Java,出于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但当我打印getElapsedTime()方法的结果时,它总是返回0。上面列出的代码是创建名为sortTime的StopWatch对象 也许四舍五入有问题? 也许getElapsedTime()方法本身有问题 System.out.println(sortTime.start()); // Start Timer java.util.Arrays.sort(numbers); // Sort the arra

出于某种原因,我可以在程序中获得开始时间和停止时间(通常相差3毫秒),但当我打印
getElapsedTime()
方法的结果时,它总是返回0。上面列出的代码是创建名为
sortTime
StopWatch
对象

也许四舍五入有问题? 也许
getElapsedTime()
方法本身有问题

    System.out.println(sortTime.start()); // Start Timer

    java.util.Arrays.sort(numbers); // Sort the array

    System.out.println(sortTime.stop());// stop timer

    System.out.println("the elapsed time is: " + sortTime.getElapsedTime());
    }
} //end of main class (used for testing)

//Define Class
 class StopWatch {
 long startTime;
 long endTime;

 //Constructors
 public StopWatch () { 
 }

 //Methods
long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    long endTime = System.currentTimeMillis();
    return endTime; 
}
long getElapsedTime() {
        return (endTime - startTime);
    }
     }
例如,当我运行程序时,结果是:

1442877972466
1442877972469

运行时间为:0

您正在创建与类变量同名的局部变量:

long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}
在该函数中使用
long startTime
会生成一个与名为
startTime
的类成员不同的局部变量。将此更改为:

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}

您正在创建与类变量同名的局部变量:

long start() {
    long startTime = System.currentTimeMillis();
    return startTime; 
}
在该函数中使用
long startTime
会生成一个与名为
startTime
的类成员不同的局部变量。将此更改为:

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}

startTime
endTime
已重新声明/隐藏为局部变量,实例字段保留其默认值(of
0

相反,请使用实例字段

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    endTime = System.currentTimeMillis();
    return endTime; 
}

startTime
endTime
已重新声明/隐藏为局部变量,实例字段保留其默认值(of
0

相反,请使用实例字段

long start() {
    startTime = System.currentTimeMillis();
    return startTime; 
}
long stop() {
    endTime = System.currentTimeMillis();
    return endTime; 
}

相关:要测量经过的时间,请不要使用
System.currentTimeMillis()
,因为它可能是错误的。相关:要测量经过的时间,请不要使用
System.currentTimeMillis()
,因为它可能是错误的。