前提・実現したいこと
大学の課題で1秒毎に現在の日時を表示させ20秒間表示したら終了と言う課題が出ています。
課題の注意事項として1秒毎の日時を表示させる為にsleep等を使わず、取得した日時から算出しろと書かれています。
1秒毎に日時の表示をさせる事は出来たのですが、1秒後から19秒後までの日時が重複して出力されてしまっているので、何が原因なのか、どうすれば重複せずに出力出来るのか教えていただきたいです。
ソースコードの形はこのままで教えていただきたいです。
発生している問題・エラーメッセージ
2020/09/01 19:39:00 2020/09/01 19:39:01 2020/09/01 19:39:01 2020/09/01 19:39:02 2020/09/01 19:39:02 2020/09/01 19:39:03 2020/09/01 19:39:03 2020/09/01 19:39:04 2020/09/01 19:39:04 2020/09/01 19:39:05 2020/09/01 19:39:05 2020/09/01 19:39:06 2020/09/01 19:39:06 2020/09/01 19:39:07 2020/09/01 19:39:07 2020/09/01 19:39:08 2020/09/01 19:39:08 2020/09/01 19:39:09 2020/09/01 19:39:09 2020/09/01 19:39:10 2020/09/01 19:39:10 2020/09/01 19:39:11 2020/09/01 19:39:11 2020/09/01 19:39:12 2020/09/01 19:39:12 2020/09/01 19:39:13 2020/09/01 19:39:13 2020/09/01 19:39:14 2020/09/01 19:39:14 2020/09/01 19:39:15 2020/09/01 19:39:15 2020/09/01 19:39:16 2020/09/01 19:39:16 2020/09/01 19:39:17 2020/09/01 19:39:17 2020/09/01 19:39:18 2020/09/01 19:39:18 2020/09/01 19:39:19
該当のソースコード
import java.text.SimpleDateFormat; import java.util.Calendar; public class Sample{ public static void main(String[]args){ SimpleDateFormat d = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar c1 = Calendar.getInstance(); int s1 = c1.get(Calendar.SECOND); Calendar c2 = Calendar.getInstance(); int s2 = c2.get(Calendar.SECOND); long s3 = c2.getTimeInMillis() - c1.getTimeInMillis(); while(c2.getTimeInMillis() < c1.getTimeInMillis() + 19000){ c2 = Calendar.getInstance(); s3 = c2.getTimeInMillis() - c1.getTimeInMillis(); if(s3 == 0){ System.out.println(d.format(c2.getTime())); }else if(s3 == 1000){ System.out.println(d.format(c2.getTime())); }else if(s3 == 2000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 3000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 4000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 5000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 6000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 7000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 8000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 9000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 10000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 11000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 12000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 13000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 14000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 15000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 16000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 17000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 18000){ System.out.println(d.format(c2.getTime())) }else if(s3 == 19000){ System.out.println(d.format(c2.getTime())) } } } }
補足情報(FW/ツールのバージョンなど)
java
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。