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

クロックは Serializable を実装する必要があります

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 に答える
0

PropertiesString特定のキーに対する値を格納するために、基本的なキーと値のペアを使用します。

便利な方法もstoreありますload

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 ;)

APIに似ていますが、自動保存とプリミティブ データ型のサポートをサポートするPreferencesAPIを使用することもできます。Properties

于 2013-09-02T09:43:10.190 に答える