privateを使用して、操作する
練習問題11の4
預金口座を表すクラスAccountを定義して、各操作ができるプログラムを作成してください。
クラス:Account
変数:
private int num 口座番号
private int pin 暗証番号
private int amount 預入金額
private static int totalAccount 預金口座の総数
private static int totalAmount 全口座の預入金額の総額
メソッド:
public boolean checkPin(int p) 機能:暗証番号が正しいかどうかをチェックする
deposit 機能:引数に指定した金額を口座に入れる
draw 機能:引数に指定した金額を口座から引き出す
残高が不足する場合は1円も引き出さない
displayInfo 機能:口座番号と残高を表示する
static getTotalAccount 機能:預金口座の総数を戻り値として返す
static displayTotalAmount 機能:全口座の預入金額の総額を表示する
クラス:ren11_4(メインのクラス)
・要素数10のAccount型の配列をあらかじめ用意して、
預金口座を10個まで作成できるようにしておく
各機能
(1) 新規口座作成 口座番号・暗証番号・初期預入金額を入力させて
新規に口座を作成する
(2) 預入 口座を配列の要素番号(添字)で指定してお金を入金する
ただし入力された要素番号が誤りの場合は入金しない
(3) 引出 口座を配列の要素番号(添字)で指定してお金を引き出す
ただし入力された要素番号が誤りの場合は引き出さない
また暗証番号の誤入力・残高不足の場合も引き出さない
(4) 預入総額表示 全口座の預入金額の総額を表示する
実行画面
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>1
口座番号を入力して下さい > 1234567
暗証番号を入力して下さい > 1234
初期預入金額を入力して下さい > 10000
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>1
口座番号を入力して下さい > 2345678
暗証番号を入力して下さい > 2345
初期預入金額を入力して下さい > 15000
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>4
全口座の残高の合計は25000円です。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:15000
口座を番号で選択して下さい > 1
暗証番号を入力して下さい > 2345
引出金額を入力して下さい > 10000
10000円引出しました。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>2
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい > 2
口座の番号の選択が誤っています。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい > 0
暗証番号を入力して下さい > 1234
引出金額を入力して下さい > 15000
残高が不足しています。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい > 0
暗証番号を入力して下さい > 1111
暗証番号が誤っています。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>2
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい > 0
預入金額を入力して下さい > 15000
15000円預入しました。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>4
全口座の残高の合計は30000円です。
操作を入力して下さい
新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>
解答例
private int num;
private int pin;
private int amount;
private static int totalAccount = 0;
private static int totalAmount = 0;
public Account(int n, int p, int a) {
num = n;
pin = p;
amount = a;
totalAccount++;
totalAmount += a;
}
public boolean checkPin(int p) {
if(p==pin) {
return true;
}
else {
return false;
}
}
public void deposit(int a) {
amount += a;
totalAmount += a;
System.out.println(a + "円預入しました。");
}
public void draw(int a) {
if(a>amount) {
System.out.println("残高が不足しています。");
}
else {
amount -= a;
totalAmount -= a;
System.out.println(a + "円引出しました。");
}
}
public void displayInfo() {
System.out.println("口座番号:" + num + ", 残高:" + amount);
}
public static void displayTotalAmount() {
System.out.println("全口座の残高の合計は" + totalAmount + "円です。");
}
public static int getTotalAccount() {
return totalAccount;
}
}
public class ren11_4 {
public static void main(String[] args) throws IOException {
BufferedReader br
= new BufferedReader( new InputStreamReader(System.in) );
Account accounts[] = new Account[10];
System.out.println("操作を入力して下さい");
System.out.print("新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>");
int n = Integer.parseInt(br.readLine());
int num, pin, amount, accountNum;
while( 1 <= n && n <= 4) {
switch( n ) {
case 1:
System.out.print("口座番号を入力して下さい > ");
num = Integer.parseInt(br.readLine());
System.out.print("暗証番号を入力して下さい > ");
pin = Integer.parseInt(br.readLine());
System.out.print("初期預入金額を入力して下さい > ");
amount = Integer.parseInt(br.readLine());
accounts[Account.getTotalAccount()] = new Account(num, pin, amount);
break;
case 2:
for(int i=0; i System.out.print( i + "---"); System.out.println("口座の番号の選択が誤っています。"); }
accounts[i].displayInfo();
}
System.out.print("口座を番号で選択して下さい > ");
accountNum = Integer.parseInt(br.readLine());
if( 0 <= accountNum && accountNum < Account.getTotalAccount() ){
System.out.print("預入金額を入力して下さい > ");
accounts[accountNum].deposit(Integer.parseInt(br.readLine()));
}
else {
System.out.println("口座の番号の選択が誤っています。");
}
break;
case 3:
for(int i=0; i
accounts[i].displayInfo();
}
System.out.print("口座を番号で選択して下さい > ");
accountNum = Integer.parseInt(br.readLine());
if( 0 <= accountNum && accountNum < Account.getTotalAccount() ){
System.out.print("暗証番号を入力して下さい > ");
if(accounts[accountNum].checkPin(Integer.parseInt(br.readLine()))) {
System.out.print("引出金額を入力して下さい > ");
accounts[accountNum].draw(Integer.parseInt(br.readLine()));
}
else {
System.out.println("暗証番号が誤っています。");
}
}
else {
}
break;
case 4:
Account.displayTotalAmount();
break;
}
System.out.println();
System.out.println("操作を入力して下さい");
System.out.print("新規口座作成(1), 預入(2), 引出(3), 預入総額表示(4), 終了(他)>");
n = Integer.parseInt(br.readLine());
}
}
privateを使用して、操作する関連ページ
- 連続して表示するメソッドを作る for文使用
- メソッドを使用して、横幅高さの長方形を表示する
- 2つの整数の差を計算して表示する メソッド
- 3つの整数の最小値を返す メソッド
- 整数nの階乗を計算して表示する メソッド
- 整数の2乗を表示する メソッド
- 2乗と4乗を表示するメソッド
- 4つの整数の中で最小値を表示するメソッド
- 配列を宣言し、整数逆順に表示する メソッド
- クラスを作成し、インスタンスに記憶し表示する
- クラスにメソッドを使用する
- クラスを作成し、インスタンスに記憶しメソッドを介して表示する
- クラスを作成し、メインメソッドを実行し表示を確認する
- コンストラクタやメソッドで時計表示
- コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す
- メンバ変数、コンストラクタ、メンバメソッドを使用し枚数表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し水量表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し位置表示する
- メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する
- インスタンス配列を使用して、集計表示を行う コンストラクタ
- フィールド変数がprivateで直接参照できないときに返すメソッド
- インスタンスを2個生成し操作する
- インスタンスを複数生成し、操作する