下面是一个使用 Java 实现的简单秒表程序。该程序通过 System.currentTimeMillis()
来记录时间,并提供启动、停止和重置功能。
代码实现
import java.util.Scanner;
public class Stopwatch {
private long startTime = 0; // 开始时间
private long stopTime = 0; // 停止时间
private boolean running = false; // 是否正在运行
// 启动秒表
public void start() {
if (!running) {
this.startTime = System.currentTimeMillis();
this.running = true;
System.out.println("秒表已启动...");
} else {
System.out.println("秒表已经在运行中!");
}
}
// 停止秒表
public void stop() {
if (running) {
this.stopTime = System.currentTimeMillis();
this.running = false;
System.out.println("秒表已停止...");
} else {
System.out.println("秒表未在运行中!");
}
}
// 获取经过的时间(以秒为单位)
public double getElapsedTime() {
if (running) {
return (System.currentTimeMillis() - startTime) / 1000.0;
} else {
return (stopTime - startTime) / 1000.0;
}
}
// 重置秒表
public void reset() {
this.startTime = 0;
this.stopTime = 0;
this.running = false;
System.out.println("秒表已重置...");
}
// 主程序逻辑
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Stopwatch stopwatch = new Stopwatch();
while (true) {
System.out.println("请选择操作:");
System.out.println("1. 启动秒表");
System.out.println("2. 停止秒表");
System.out.println("3. 查看经过时间");
System.out.println("4. 重置秒表");
System.out.println("5. 退出程序");
int choice = scanner.nextInt();
switch (choice) {
case 1:
stopwatch.start();
break;
case 2:
stopwatch.stop();
break;
case 3:
System.out.printf("经过时间:%.2f 秒\n", stopwatch.getElapsedTime());
break;
case 4:
stopwatch.reset();
break;
case 5:
System.out.println("程序已退出。");
scanner.close();
return;
default:
System.out.println("无效的选择,请重新输入!");
}
}
}
}
功能说明
-
启动秒表:
- 调用
start()
方法时,记录当前时间戳并标记秒表为运行状态。 - 如果秒表已经在运行,则提示用户不能重复启动。
- 调用
-
停止秒表:
- 调用
stop()
方法时,记录当前时间戳并标记秒表为停止状态。 - 如果秒表未在运行,则提示用户无法停止。
- 调用
-
查看经过时间:
- 使用
getElapsedTime()
方法计算从启动到当前或停止的时间差(以秒为单位)。 - 如果秒表正在运行,则基于当前时间计算;如果已停止,则基于停止时间计算。
- 使用
-
重置秒表:
- 调用
reset()
方法时,将所有时间变量归零并重置状态。
- 调用
-
退出程序:
- 用户选择退出时,关闭
Scanner
并终止程序。
- 用户选择退出时,关闭
示例运行
请选择操作:
1. 启动秒表
2. 停止秒表
3. 查看经过时间
4. 重置秒表
5. 退出程序
1
秒表已启动...
请选择操作:
1. 启动秒表
2. 停止秒表
3. 查看经过时间
4. 重置秒表
5. 退出程序
3
经过时间:5.01 秒
请选择操作:
1. 启动秒表
2. 停止秒表
3. 查看经过时间
4. 重置秒表
5. 退出程序
2
秒表已停止...
请选择操作:
1. 启动秒表
2. 停止秒表
3. 查看经过时间
4. 重置秒表
5. 退出程序
4
秒表已重置...
请选择操作:
1. 启动秒表
2. 停止秒表
3. 查看经过时间
4. 重置秒表
5. 退出程序
5
程序已退出。
注意事项
-
精度问题:
- 本程序使用
System.currentTimeMillis()
,其精度通常为毫秒级。如果需要更高精度,可以考虑使用System.nanoTime()
。
- 本程序使用
-
多线程环境:
- 如果需要在多线程环境中使用秒表,建议对共享变量进行同步处理,以避免并发问题。
-
扩展功能:
- 可以进一步扩展功能,例如支持暂停/恢复、显示分钟和小时格式等。