0

我还在做我的时钟。我想在使用时钟时保存/加载我的数据,所以当我在特定时间(如 1 月 23 日)关闭时,当我重新打开 eclipse 时,我可以做一些事情,这样它就会让我回到所说的时间。有任何想法吗?(要求提供片段)

import java.util.Scanner;
import static java.lang.System.out;
public class Clock {
public static void main(String args[]) throws InterruptedException {

    Scanner keyboard = new Scanner(System.in);

    out.print("Set the week and day.");
    String specday = null;
    String days = null;
    String season = null;
String morning = null;
String month = null;
int inputweek = keyboard.nextInt();
int inputday = keyboard.nextInt(); 
int week = inputweek;
int day = inputday;
int hours = 1;
int minutes = 0;
int seconds = 0; {
}
for (;seconds <= 60; seconds++) {
Thread.sleep(1);
 if (seconds == 60) minutes++; {
if (minutes == 60) hours++; {
if (hours == 24) day++; {
     if (day == 7 && hours == 23 && minutes == 59 && seconds == 59)week++; {
if (week > 0 && week < 9) season = " summer";
if (week > 44 && week < 49) season = " summer";
if (week > 8 && week < 21) season = " autumn";
if (week > 20 && week < 33) season = " winter";
if (week > 32 && week < 45) season = " spring";
if (week > 0 && week < 5) month = " january";
if (week > 4 && week < 9) month = " february";
if (week > 8 && week < 13)month = " march";
if (week > 12 && week < 17) month = " april";
if (week > 16 && week < 21) month = " may";
if (week > 20 && week < 25) month = " june";
if (week > 24 && week < 29) month = " july";
if (week > 28 && week < 33) month = " august";
if (week > 32 && week < 37) month = " september";
if (week > 36 && week < 41) month = " october";
if (week > 40 && week < 45) month = " november";
if (week > 44 && week < 49) month = " december";
if (week == 47 && day == 2) specday = " christmas eve";
if (week == 47 && day == 3) specday = " christmas";
if (week == 47 && day == 4) specday = " boxing day";
if (hours < 12) morning = " am";
if (hours > 11) morning = " pm";
if (day == 1) days = " monday";
if (day == 2) days = " tuesday";
if (day == 3) days = " wednesday";
if (day == 4) days = " thursday";
if (day == 5) days = " friday";
if (day == 6) days = " saturday";
if (day == 7) days = " sunday";
}
System.out.println(hours + ":" + minutes + ":" + seconds + morning + days + month + season + specday); {
    if (seconds == 60) seconds = 0;
    if (minutes == 60) minutes = 0;
if (hours == 24) hours = 0;
if (day > 7) day = 1;
if (week == 49) week = 1;
if (specday == null); specday = " ";
}
}
}
}
}
}
}
4

2 回答 2

0

Properties使用基本键/值String对来存储针对特定键的值。

它也有方便storeload方法

FileReader reader = null;
Properties properties = new Properties();
try {
    reader = new FileReader("clock.properties");
    properties.load(reader);
} catch (IOException exp) {
    exp.printStackTrace();
}  

String lastTime = reader.getProperty("Clock.lastTime");
// Use something like SimpleDateFormat to parse the String back to a Date if required...

或者

String strHour = reader.getProperty("Clock.lastHour", "0");
String strMin = reader.getProperty("Clock.lastMinute", "0");
String strSec = reader.getProperty("Clock.lastSecond", "0");
// Use Integer.toString to parse the results, don't forget to check for nulls ;)

您也可以使用类似于PreferencesAPIProperties但支持自动保存和支持原始数据类型的 API

于 2013-09-02T09:43:10.190 回答
0

时钟必须实现可序列化

public Clock implements Serializable{
     //logic
}

如何序列化时钟的状态:

FileOutputStream fileOut =
         new FileOutputStream("/tmp/clock.state");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(clockInstance);
out.close();
fileOut.close();

如何在下次运行时阅读:

FileInputStream fileIn = new FileInputStream("/tmp/clock.state");
ObjectInputStream in = new ObjectInputStream(fileIn);
clockInstance = (Clock) in.readObject();
in.close();
fileIn.close();
于 2013-09-02T08:05:25.897 回答