新・明解 Java 入門 演習 9-2 解答
Hello, Terminal!swaponQです!
今回は演習 9-2 に取り組んでいこうと思います。
- 演習 9-2
日付クラス第3版を利用するプログラムを作成せよ。すべてのコンストラクタの働きを確認できるようにすること。
・Day.java
//日付クラスDay【第3版】 public class Day { private int year = 1; private int month = 1; private int date = 1; public Day() { } public Day(int year) { this.year = year; } public Day(int year, int month) { this(year); this.month = month; } public Day(int year, int month, int date) { this(year, month); this.date = date; } public Day(Day d) { this(d.year, d.month, d.date); } public int getYear() { return year; } public int getMonth() { return month; } public int getDate() { return date; } public void setYear(int year) { this.year = year; } public void setMonth(int month) { this.month = month; } public void setDate(int date) { this.date = date; } public void set(int year, int month, int date) { this.year = year; this.month = month; this.date = date; } public int dayOfWeek() { int y = year; int m = month; if (m == 1 || m == 2) { y--; m += 12; } return (y + y / 4 - y / 100 + y / 400 + (13 * m + 8) / 5 + date) % 7; } public boolean equalTo(Day d) { return year == d.year && month == d.month && date == d.date; } public String toString() { String[] wd = {"日", "月", "火", "水", "木", "金", "土"}; return String.format("%04d年%02d月%02d日(%s)", year, month, date, wd[dayOfWeek()]); } }
・ex09_2.java
import java.util.Scanner; class ex09_2 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.print("年:"); int y = stdIn.nextInt(); System.out.print("月:"); int m = stdIn.nextInt(); System.out.print("日:"); int d = stdIn.nextInt(); Day day1 = new Day(y,m,d); System.out.println("day1 = " + day1); Day day2 = new Day(day1); System.out.println("day2をday1と同じ日付として作りました。"); System.out.println("day2 = " + day2); if (day1.equalTo(day2)) System.out.println("day1とday2は等しいです。"); else System.out.println("dayとday2は等しくありません。"); Day d1 = new Day(); Day d2 = new Day(2010); Day d3 = new Day(2010,10); Day d4 = new Day(2010,10,15); System.out.println("d1 = " + d1); System.out.println("d2 = " + d2); System.out.println("d3 = " + d3); System.out.println("d4 = " + d4); Day[] a = new Day[3]; for (int i = 0; i < a.length; i++) { a[i] = new Day(); } for (int i = 0; i < a.length; i++) { System.out.println("a[" + i + "] = " + a[i]); } } }
・実行結果
年:2020 月:8 日:4 day1 = 2020年08月04日(火) day2をday1と同じ日付として作りました。 day2 = 2020年08月04日(火) day1とday2は等しいです。 d1 = 0001年01月01日(月) d2 = 2010年01月01日(金) d3 = 2010年10月01日(金) d4 = 2010年10月15日(金) a[0] = 0001年01月01日(月) a[1] = 0001年01月01日(月) a[2] = 0001年01月01日(月)
今回は以上です。お疲れ様でした!
次回は演習 9-3 です。
Goodbye, Terminal… swaponQでした!