回答者様のおかげで曜日はきちんと出力されるようになりました。
ただ和暦を出力する際に「1912 6 1」と入力すると、
「1912(大正1)年 6月1日 (土)」と出てしまいます。
本当は「1912(明治45)年 6月1日 (土)」になって欲しいです。
toWareki()のところをどうすれば西暦と月日で判断できるのかご教授お願いします。
MyBirthday.java
class MyBirthday { int year, month, day; MyBirthday(int y, int m, int d) { year = y; month = m; day = d; } public String toWareki() { int i; if (year>=2019) { i = year - 2019 + 1; return "令和" +i; } else if (year>=1989){ i = year - 1989 + 1; return "平成" +i; } else if (year>=1926) { i = year - 1926 + 1; return "昭和" +i; } else if (year>=1912) { i = year - 1912 + 1; return "大正" +i; } else if (year>=1868){ i = year - 1868 + 1; return "明治" +i; } return null; } public String getDayOfWeek() { if (month == 1 || month == 2) { year = year - 1; month = month + 12; } int h = (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7; if (h == 0) { return "日"; } else if (h == 1) { return "月"; } else if (h == 2) { return "火"; } else if (h == 3) { return "水"; } else if (h == 4) { return "木"; } else if (h == 5) { return "金"; } else if (h == 6){ return "土"; } return null; } public String toString() { return year+ "(" +toWareki()+ ")年 " +month+ "月" +day+ "日 (" +getDayOfWeek()+ ") "; } }
MyBirthdayTest.java
import java.util.Scanner; public class MyBirthdayTest { public static void main(String[] args) { System.out.println("生年月日を入力してください。"); Scanner str = new Scanner(System.in); int year = str.nextInt(); int month = str.nextInt(); int day = str.nextInt(); MyBirthday m = new MyBirthday(year, month, day); System.out.println(m); } }
Eclipse_2020-06を使っています
回答1件
あなたの回答
tips
プレビュー