0
点赞
收藏
分享

微信扫一扫

用Java实现一个简单的秒表程序

下面是一个使用 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("无效的选择,请重新输入!");
            }
        }
    }
}

功能说明

  1. 启动秒表

    • 调用 start() 方法时,记录当前时间戳并标记秒表为运行状态。
    • 如果秒表已经在运行,则提示用户不能重复启动。
  2. 停止秒表

    • 调用 stop() 方法时,记录当前时间戳并标记秒表为停止状态。
    • 如果秒表未在运行,则提示用户无法停止。
  3. 查看经过时间

    • 使用 getElapsedTime() 方法计算从启动到当前或停止的时间差(以秒为单位)。
    • 如果秒表正在运行,则基于当前时间计算;如果已停止,则基于停止时间计算。
  4. 重置秒表

    • 调用 reset() 方法时,将所有时间变量归零并重置状态。
  5. 退出程序

    • 用户选择退出时,关闭 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
程序已退出。

注意事项

  1. 精度问题

    • 本程序使用 System.currentTimeMillis(),其精度通常为毫秒级。如果需要更高精度,可以考虑使用 System.nanoTime()
  2. 多线程环境

    • 如果需要在多线程环境中使用秒表,建议对共享变量进行同步处理,以避免并发问题。
  3. 扩展功能

    • 可以进一步扩展功能,例如支持暂停/恢复、显示分钟和小时格式等。
举报

相关推荐

0 条评论