刚看到“方法和类”,题目要求设计一个秒表类stopwatch,来记录排序一个数组所用的时间。但是不知道程序哪里出错了,只显示开始时间 startTime。endTime 和 流逝时间getElapseTime() 都不显示。
package demo;
import java.util.Scanner;
import java.util.Date;
import java.util.Arrays;
import java.util.Random;
public class Welcome {
public static void main(String[] args) {
int[] ary = new int[100];
for (int i = 0;i < 100;i++)
ary[i] = (int)(Math.random() * 100);
stopwatch watch = new stopwatch();
System.out.println(watch.getStart());
watch.Start();
System.out.println(watch.getStart());
for (int i = 0;;i++){
int temp,count = 0;
for (int j = 0;j + 1 < 100;j++){
if (ary[j + 1] - ary[j] <= 0){
count++;
temp = ary[j];
ary[j] = ary[j + 1];
ary[j + 1] = temp;
}
}
if (count == 0) {
break;}
}
watch.End();
System.out.println(watch.getEnd());
}
}
class stopwatch{
private static long startTime;
private static long endTime;
stopwatch(){
}
static long getStart(){
return startTime;
}
static long getEnd(){
return endTime;
}
static void Start(){
startTime = System.currentTimeMillis();
}
static void End(){
endTime = System.currentTimeMillis() ;
}
static long getElapseTime(){
return endTime - startTime;
}
}
结果显示:0
(当前时间流逝)
最上面的for循环没括号吗
getElapseTime没看你调用,当然不显示。
既然你定义成static
stopwatch watch = new stopwatch(); 这里的new多此一举。
应该是 stopwatch.Start();
stopwatch.getStart()
等
stopwatch watch = new stopwatch();
System.out.println(watch.getStart());
watch.Start();
System.out.println(watch.getStart());
第二个System.out 不打印???
看了一下,是这样的,运行的结果是0和一串长数字,然后程序由于你在第二个循环写了死循环,所以无限运行了,第一个0,是因为你还没给start赋值,
所以用会输出默认值0,你赋值之后,你又输出他了,就给你一串长数字,然后就到你写的死循环了,根本执行不到你后面的
你的第一层for循环没有写判断条件。死循环了。。。