新・明解 Java 入門 演習 9-4 解答
Hello, Terminal!swaponQです!
今回は演習 9-4 に取り組んでいこうと思います。
- 演習 9-4
演習8-1で作成した《人間クラス》に、誕生日のフィールドとtoStringメソッドを追加せよ。
・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()]); } }
・Human.java
class Human { //フィールド private String name; private int height; private int weight; private Day birthday; //コンストラクタ Human(String name, int height, int weight, Day birthday) { this.name = name; this.height = height; this.weight = weight; this.birthday = new Day(birthday); } //メソッド void putSpec() { System.out.printf("名前:%s\n", name); System.out.printf("身長:%d cm\n", height); System.out.printf("体重:%d kg\n", weight); } public String toString() { return String.format("名前:%s\n身長:%d\n体重:%d\n誕生日:%s\n" ,name, height, weight, birthday); } }
・ex09_4.java
// 人間クラスをテストするクラス class ex09_4 { public static void main(String[] args) { Human my = new Human("swaponQ", 182, 68, new Day(2000,1,1)); System.out.print(my.toString()); } }
・実行結果
名前:swaponQ 身長:182 体重:68 誕生日:2000年01月01日(土)
今回は以上です。お疲れ様でした!
次回は演習 9-5 です。
Goodbye, Terminal… swaponQでした!