新・明解 Java 入門 演習 9-3 解答
Hello, Terminal!swaponQです!
今回は演習 9-3 に取り組んでいこうと思います。
- 演習 9-3
第8章で作成した《銀行口座クラス(第2版)》に、口座開設日のフィールドと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()]); } }
・Account.java
// 銀行口座クラス【第2版】 class Account { private String name; // 口座名義 private String no; // 口座番号 private long balance; // 預金残高 private Day day; //口座開設日 //--- コンストラクタ ---// Account(String n, String num, long z, Day d) { name = n; // 口座名義 no = num; // 口座番号 balance = z; // 預金残高 day = new Day(d); //口座開設日 } //--- 口座名義を調べる ---// String getName() { return name; } //--- 口座番号を調べる ---// String getNo() { return no; } //--- 預金残高を調べる ---// long getBalance() { return balance; } //--- 口座開設日を調べる ---// public Day getDay() { return new Day(day); } //--- k円預ける ---// void deposit(long k) { balance += k; } //--- k円おろす ---// void withdraw(long k) { balance -= k; } //--- 文字列表現を返却 ---// public String toString() { return String.format("口座名義:%s\n口座番号:%s\n預金残高:%d\n口座開設日:%s\n" ,name, no, balance, day); } }
・ex09_3.java
// 銀行口座クラス【第2版】をテストするクラス class ex09_3 { public static void main(String[] args) { Account my = new Account("swaponQ", "123456", 100000, new Day(2020,8,4)); System.out.print(my.toString()); } }
・実行結果
口座名義:swaponQ 口座番号:123456 預金残高:100000 口座開設日:2020年08月04日(火)
今回は以上です。お疲れ様でした!
次回は演習 9-4 です。
Goodbye, Terminal… swaponQでした!