Javaの学習を始めて34日くらいの人のための問題集

Java

オブジェクト指向練習問題。

Q1
預金口座を表すクラスAccountを定義して、
各操作ができるプログラムを作成せよ。
■クラス:Account
<フィールド変数>
private int num 口座番号
private int pin 暗証番号
private int amount 預入金額
private static int totalAmount 全口座の預入金額の総額

<一般メソッド>
public boolean checkPin(int p)
… 暗証番号が正しいかどうかをチェックする
deposit
… 引数に指定した金額を口座に入れる
draw
… 引数に指定した金額を口座から引き出す
  残高が不足する場合は1円も引き出さない
toString(Override)
… 口座番号と残高を表示する
static displayTotalAmount 機能
… 全口座の預入金額の総額を表示する

[実行例]

1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>1
口座番号を入力して下さい >1234567
暗証番号を入力して下さい >1234
初期預入金額を入力して下さい >10000
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>1
口座番号を入力して下さい >2345678
暗証番号を入力して下さい >2345
初期預入金額を入力して下さい >15000
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>4
全口座の残高の合計は25000円です。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:15000
口座を番号で選択して下さい >1
暗証番号を入力して下さい >2345
引出金額を入力して下さい >10000
10000円引き出しました。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>2
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい >2
口座の番号の選択が誤っています。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい >0
暗証番号を入力して下さい >1234
引出金額を入力して下さい >15000
残高が不足しています。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい >0
暗証番号を入力して下さい >1111
暗証番号が誤っています。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>2
0---口座番号:1234567, 残高:10000
1---口座番号:2345678, 残高:5000
口座を番号で選択して下さい >0
預入金額を入力して下さい >15000
15000円預入しました。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>4
全口座の残高の合計は30000円です。
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>5
アプリケーションを終了しました。

一般クラス

01public class Account {
02  private int num;
03  private int pin;
04  private int amount;
05  private static int totalAmount;
06  public Account(int num,int pin,int amount){
07    this.num=num;
08    this.pin=pin;
09    this.amount=amount;
10    totalAmount+=amount;
11  }
12  public boolean checkPin(int p){
13    return this.pin==p;
14  }
15  public void deposit(int money){
16    this.amount+=money;
17    totalAmount+=money;
18    System.out.println(money+"円預入しました。");
19  }
20  public void draw(int money){
21    if(this.amount < money){
22      System.out.println("残高が不足しています。");     
23    }else{
24      this.amount-=money;
25      totalAmount-=money;
26      System.out.println(money+"円引き出しました。");
27    }
28  }
29  @Override
30  public String toString() {
31    return String.format("口座番号:%d, 残高:%d", this.num,this.amount);
32  }
33  public static void displayTotalAmount(){
34    System.out.println("全口座の残高の合計は"+totalAmount+"円です。");
35  }
36}

アプリケーションクラス

01import java.util.*;
02public class BankApp {
03  public static List<Account> list=new ArrayList<>();
04  public static Scanner s=new Scanner(System.in);
05  public static void main(String[] args) {   
06    while(true){
07      int select=getInputInt("1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>");
08      switch(select){
09      case 1:
10        Account acc=new Account(
11            getInputInt("口座番号を入力して下さい >"),
12            getInputInt("暗証番号を入力して下さい >"),
13            getInputInt("初期預入金額を入力して下さい >")
14            );
15        list.add(acc);
16        break;
17      case 2:
18        displayAccount();
19        int index=getInputInt("口座を番号で選択して下さい >");
20        if(index < 0 || index >= list.size()){
21          System.out.println("口座の番号の選択が誤っています。");
22        }else{
23          int money=getInputInt("預入金額を入力して下さい >");
24          list.get(index).deposit(money);
25        }
26        break;
27      case 3:
28        displayAccount();
29        index=getInputInt("口座を番号で選択して下さい >");
30        if(index < 0 || index >= list.size()){
31          System.out.println("口座の番号の選択が誤っています。");
32        }else{
33          int pass=getInputInt("暗証番号を入力して下さい >") ;
34          if(list.get(index).checkPin(pass)){
35            int money=getInputInt("引出金額を入力して下さい >");
36            list.get(index).draw(money);
37          }else{
38            System.out.println("暗証番号が誤っています。");
39          }
40        }
41        break;
42      case 4:
43        Account.displayTotalAmount();
44        break;
45      case 5:
46        System.out.println("アプリケーションを終了しました。");
47        return;
48      }
49    }
50  }
51  public static int getInputInt(String msg){
52    System.out.print(msg);
53    int input=s.nextInt();
54    return input;
55  }
56  public static void displayAccount(){
57    for(int i=0;i<list.size();i++){
58      System.out.println(i+"---"+list.get(i));
59    }
60  }
61}

コメント

タイトルとURLをコピーしました