Javaの標準入力で任意の年月日を指定して曜日を出力
解決したいこと
ここに解決したい内容を記載してください。
Javaの標準入力で任意の年月日を指定した際に
曜日を出力させたいが
実際に試してみると ずれている(間違っている)
2021年7月31日を指定すると金曜日になる
2021年6月1日を指定すると月曜日になるなど
曜日が一つ手前にずれてしまいます
該当するソースコード
言語名 Java
ソースコードを入力
public class Year02 {
public static void main(String[] args) {
System.out.println("西暦y年m月d日は〇曜日でしょう");
int year = inputInt("西暦y年");
int month = inputInt("m月");
int date = inputInt("d日");
// 西暦1601年1月1日からの通算日数を求める
int totalDays = 0;
for (int y = 1601; y < year; y++) {
totalDays = totalDays + 365; // 1年=365日
if (isLeapYear(y)) {
totalDays++; // 閏年は+1日
}
}
for (int m = 1; m < month; m++) {
switch (m) {
case 2:
totalDays += 28;
if (isLeapYear(year)) {
totalDays++;
}
break;
case 4:
case 6:
case 9:
case 11:
totalDays += 30;
break;
default:
totalDays += 31;
break;
}
}
totalDays += date;
// Helper.printString((totalDays % 7)+ "曜日");
char[] weekDay = {'土','日', '月', '火', '水', '木', '金' };
System.out.println("⇒" + weekDay[totalDays % 7] + "曜日");
}
// 閏年判定
public static boolean isLeapYear(int year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
// プロンプト(入力促進メッセージ)を表示して入力した整数を返す
public static int inputInt(String prompt) {
System.out.print(prompt);
int inp = new java.util.Scanner(System.in).nextInt();
return inp;
}
}
0