0

私は次のようなタスクを実行する銀行口座を持っています: 預金/引き出しを行う. 最後に行った 10 個のアクションを保存する履歴を作成する必要があります。(銀行全体に口座が 1 つしかないとします)。

私の考えでは、少なくとも 2 つのクラスがあります。BankAccount と Actions です。

class BankAccount {
   private Action performTask;    
   public class Action() {
      private int actIndex;
      private String[] act = new String[10];

      Action() {
        actIndex = -1;    
      }

      public void add(String title) {
        ++actIndex;
        act[actIndex] = title;
      }
   }

  public void deposit(){
    performTask.add("Deposit");
  }    
}

間違いはあるかもしれませんが、それでも望ましい結果が得られません。希望する結果を得るにはどうすればよいですか? 何か案は?

4

2 に答える 2

0

まあただのアイデア

queueサイズ 10を維持できます。

引き出し操作と入金操作を実行する場所で、最新のアクションを反映するようにキューにも変更を加えます。

于 2013-10-26T12:49:38.120 に答える
0

ACtionクラスは抽象クラスです。これには2つの機能があります:

  • doAction(int k)実装に応じて引き出しまたは入金する
  • printAction()実行されたアクションを出力する

DepositActionとは、クラスWithdrawActionの 2 つの実装です。Action

actionListは、Queue発生した最後の 10 件のトランザクションを保持する です。

amountは当座預金が保有する合計額であり、これは 2 つのクラスDepositActionWithdrawActionが作用する数です。

これがあなたを助けることを願っています。

public class BankAccount{
    private int amount;
    private Queue<Action> actionList=new LinkedList<Action>();

    public void withDraw(int k){
        Action a = new withdrawAction();
        a.doAction(k);
        if(actionList.size()<10){
            actionList.offer(a);
        }
        else{
            actionList.poll();
            actionList.offer(a);
        }
    }

    public void deposit(int k){
        Action a = new DepositAction();
        a.doAction(k);
        if(actionList.size()<10){
            actionList.offer(a);
        }
        else{
            actionList.poll();
            actionList.offer(a);
        }
    }

    abstract class Action{  
        String actionDesc=null;
         abstract void doAction(int k);
         abstract void printAction();
    }

    class DepositAction extends Action{
        @Override
        void doAction(int k) {
            amount=amount+k;
            actionDesc="Deposit: "+k;
        }
        @Override
        void printAction() {
            System.out.println(actionDesc);
        } 
    }

    class withdrawAction extends Action{
        @Override
        void doAction(int k) {
            if(amount-k<0){
                throw new IllegalArgumentException();
            }
            amount=amount-k;
            actionDesc="Withdraw: "+k;
        }
        @Override
        void printAction() {
            System.out.println(actionDesc);
        }
    }
}
于 2013-10-26T13:17:43.873 に答える