0

我有一个银行账户,我可以在其中执行以下任务:存款/取款。我需要创建历史来存储我所做的最后 10 个操作。(假设整个银行只有一个账户)。

我认为,至少有 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类是抽象类。其中有两个功能:

  • doAction(int k)按执行取款或存款
  • printAction()打印执行的动作

DepositAction并且WithdrawActionAction该类的两个实现。

actionList是一个Queue保存最近发生的 10 笔交易。

amount是当前账户持有的总金额,这是两个类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 回答