java - Java 中的节省时间 (int) 从它停止的地方开始?

标签 java

谁能给我一个关于在 Java 中保存整数的快速提示。我正在使用计时器制作一个自定义时钟,并希望在退出程序时保存时间(或启动自动重新启动并调用保存方法)并从停止的地方开始。

我的代码:

主类中的方法:

        t = new Timer();
        tt = new JGameTimer();
        t.scheduleAtFixedRate(tt, 1000, 1000);

时间类:

    private static int timeInSeconds = 0, timeInMinutes = 0, timeInHours = 0, timeInDays = 0, timeInYears = 0;
    private int lastTimeInSeconds, lastTimeInMinutes, lastTimeInHours, lastTimeInDays, lastTimeInYears;
    private boolean timeHasBeenSet = false;

    public void run() {
        if (!timeHasBeenSet) {
        timeInSeconds = lastTimeInSeconds;
        timeInMinutes = lastTimeInMinutes;
        timeInHours = lastTimeInHours;
        timeInDays = lastTimeInDays;
        timeInYears = lastTimeInYears;
        timeHasBeenSet = true;
        }else{
        continueTime();
        }
    }

    public void saveTime() {
        lastTimeInSeconds = timeInSeconds;
        lastTimeInMinutes = timeInMinutes;
        lastTimeInHours = timeInHours;
        lastTimeInDays = timeInDays;
        lastTimeInYears = timeInYears;
    }

    public void continueTime() {
        timeInSeconds++;
        if (timeInSeconds == 60) {
            timeInSeconds = 0;
            timeInMinutes++;
        }
        if (timeInSeconds == 10) {
            saveTime();
            System.out.println("Time Saved (Seconds)");
        }
        if (timeInMinutes == 60) {
            timeInMinutes = 0;
            timeInHours++;
        }
        if (timeInMinutes == 2) {
            saveTime();
            System.out.println("Time Saved (Minutes)");
        }
        if (timeInHours == 24) {
            timeInHours = 0;
            timeInDays++;
        }
        if (timeInDays == 2920) {
            timeInDays = 0;
            timeInYears++;
        }
        System.out.println("Time is "+timeInYears+":"+timeInDays+":"+timeInHours+":"+timeInMinutes+":"+timeInSeconds+"");
    }

最佳答案

我建议使用 java.io.DataOutputStream具有底层java.io.FileOutputStreamDataOutputStream 提供了编写原始类型的方法:

DataOutputStream output = new DataOutputStream(
        new FileOutputStream(new File("my-file.dat")));
output.writeInt(someInt);
// ... write more values ...

您稍后可以使用 DataInputStreamFileInputStream 读回这些内容(以相同的顺序)。

或者,您可以编写一个类来保存要保存的数据,并使用 Java 的序列化机制来保存/加载它。

关于java - Java 中的节省时间 (int) 从它停止的地方开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394609/

相关文章:

java - 我希望程序使用许多字符串读取用户输入

java - 在ArrayLists中调用accountNo,accountName

java - 如何在Java中正确使用RSASSA-PSS进行签名?

java - 无法在Java swing中设置连接4网格的最大尺寸

java - 为什么它不起作用?使用 getMouseClicked 没有结果

java - 使用 Eclipse、Tomcat 和 Jersey 的 Java 中的 Restful WebServices

java - 从枚举中获取一定数量

java - 适配器值未从其他 Activity 更新

java - 尽管正确设置了 Activator,但在不调用 BundleActivator.start() 的情况下运行 IStartup.earlyStartup() 。为什么?

java - 使用边界填充算法填充形状时出现堆栈溢出错误