- 締切済み
どうしてもできない問題があります。どなたかできる方火曜のごごまでにどうかお願いします。
問題 (1) クラスAccountの改善 Accountクラスは、コンストラクタを持ち、口座開設時の残高は0円となるように初期化する。 インスタンス変数は全てprivateとする。 名前を返すgetNameメソッドを追加する。 アカウントクラスは以下の構造を持つ。なお、privateなメソッドやインスタンス変数は必要に応じて追加しても良い。 class Account { private String name; /* 口座名 */ private int balance; /* 口座の残高 */ public Account(String name) { ... } /* コンストラクタ */ public int doDeposit(int amount) { ... } /* 預金 */ public int doWithdraw(int amount) { ... } /* 払い戻し*/ public int doBalance() { ... } /* 残高照会 */ public String getName() { ... } /* 口座名を返す */ } Accountの各メソッドは次に示す値を返す。 doDeposit 0 正常終了したとき -3 0以下の額を預金しようとしたとき doWithdraw 0 正常終了したとき -1 預金残高を越える額を引き出そうとしたとき -3 0以下の額を引き出そうとしたとき doBalance 指定された口座の残高 getName 指定された口座の名前 (2) クラスBankの構造 Bankは、以下のような口座のリストを持つ。 口座リストは口座の配列として定義し、口座は口座名の順に並んでいるようにすること。 配列の大きさは20とする。(即ち、最大20の口座しか作れないものとする。) 配列中では、空きがないように、口座を先頭からつめておくこと。 Bankは、次のクラスで表される。ただし、privateなメソッドやインスタンス変数は必要に応じて追加しても良い。 class Bank { Account[] customer; /* 口座リスト */ int count; /*配列中の口座の個数 */ public Bank() { ... } /* 口座リストを初期化する */ public int doOpen(String name) { ... } /* 口座開設(引数は口座名)*/ public int doClose(String name) { ... } /* 口座解約(引数は口座名) */ public int doDeposit(String name, int amount) { ... } /* 預金(引数は口座名と預金額) */ public int doWithdraw(String name, int amount) { ... } /* 払い戻し(引数は口座名と引き出し額)*/ public int doBalance(String name) { ... } /* 残高照会 (引数は口座名)*/ } Bankの各メソッドは次に示す値を返す。 doOpen 0 正常終了したとき -1 20を越える口座を開こうとしたとき -2 口座リストにある口座名で再び口座を開こうとしたとき doClose 0 正常終了したとき -1 残高が0でない口座を解約しようとしたとき -2 口座リストにない口座名が指定されたとき doDeposit 0 正常終了したとき -2 口座リストにない口座名が指定されたとき -3 0以下の額を預金しようとしたとき doWithdraw 0 正常終了したとき -1 預金残高を越える額を引き出そうとしたとき -2 口座リストにない口座名が指定されたとき -3 0以下の額を引き出そうとしたとき doBalance 0以上の値 指定された口座の残高(正常終了したとき) -2 口座リストにない口座名が指定されたとき (3) AccountクラスやBankクラスでは、System.out.printlnなどの入出力関数を使用してはならない。エラーメッセージの出力は、各関数の返す値を見て、課題6以降で作成予定のユーザインタフェースで行う。 (4) 各処理でエラーが発生する場合、即ち戻り値が0以外の場合は,銀行口座の情報は変更してはならない。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MillenniuM
- ベストアンサー率58% (42/72)
TreeSet という順序付けられるものがあることを 知れました。 Account.java: http://pastebin.com/download.php?i=2EtBLbjV Bank.java: http://pastebin.com/download.php?i=RYeYLHN4 Main.java: http://pastebin.com/download.php?i=saRNXQc4
- tasoh
- ベストアンサー率45% (19/42)
どこが分からなくてできないのかがわからないので 適切な回答ができませんが、見たところ問題自体は詳しく書いてあるので その通りに記述していき、あとは口座の開設、解約などの処理を実装すればよいように見えます。 例)--------------------------- /* 預金 */ public int doDeposit(int amount) { if(amount > 0) { //この中に預金処理を追加する return 0; } return -3; } ------------------------------ どの口座に預金するか、というのが名前で指定するほかなさそうなので Bankクラスに、指定した口座名と一致したらそのAccountクラスを返すというメソッドを追加する、なども必要かもしれません。 ちょっとだけ浮かんだソースを以下に。参考にしてみてください。 確認はしていないので、どこか変かもしれませんが; /* 追加メソッド(口座名から、クラスを特定) */ private Account searchAccount(String name) { for(int i=0; i<customer.length(); i++) { if(name.equals(customer[i].getName())) { //見つかったら口座を返す return customer[i]; } } //見つからなかったらnullを返す return null; } /* 残高照会 (引数は口座名)*/ public int doBalance(String name) { //口座を検索 Account act = searchAccount(name); if(act != null) { //見つかったら、残高を返す return act.doBalance(); } //指定された口座が見つからなかった return -2; }