コードを書く練習として作ってみました。
Yahoo!ショッピングにて「5のつく日」と「毎週日曜日」はそれぞれ個別のキャンペーンで、「5のつく日曜日」はその2つが重なるダブルポイントアップデーです。
こちらは現在の日付から1ずつ日付を加算していき、
次の5のつく日曜日が出力されていくプログラムです。
プログラム要件
- endと入力されるまで無限ループ
- Enterキーを押すと1つずつ次の5のつく日曜日の年月日が表示される
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Date date = new Date();
Date d = null;
int week = 0, day = 0;
String pointday = "", str = "";
// Date型の日時をCalendar型に変換
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println("現在の日付から5のつく日曜日を表示します…");
System.out.println("Enterキーを押すと次の日付を表示");
System.out.print("endと入力するとループ終了");
while (!(str.equals("end"))) {
str = scanner.nextLine();
while (!(str.equals("end"))) {
// 日付を加算する
calendar.add(Calendar.DATE, 1);
// 曜日、日付の取得
week = calendar.get(Calendar.DAY_OF_WEEK);
day = calendar.get(Calendar.DATE);
// 5の付く日曜日の日付の場合、年月日を出力
if (week == 1 && (day == 5 || day == 15 || day ==25)) {
d = calendar.getTime();
pointday = new SimpleDateFormat("yyyy/MM/dd").format(d);
System.out.print(pointday);
break;
}
}
}
scanner.close();
}
}