網站聲明

本網站包含了各式各樣的資源,如果有侵占到您的著作權,請與本人通知,本人會立即改進。本站所有發表僅屬研究討論性質,如果有任何後果請自行負責。

2015-06-10

TQC+ Java6 基本認識 604-5

604-5.
設計說明:

1. 請使用Exception撰寫一功能:當任何一個帳戶之餘額低於0時, 不可提款,且印出警告信息。
2. Peter再次購買A基金14000元, 價格為每單位300元。

參考程式碼:
  1. import java.util.*;
  2. class Account{
  3.  String name;
  4.  double APR;
  5.  int Balance;
  6.  Account(){Balance = 0;}
  7.   public void deposit(int i){
  8.    Balance+=i;
  9.   }
  10.   public void withdraw(int i) throws Exception{
  11.    if(Balance < i)
  12.    throw new Exception(name + ":提款金額: " + i + " 大於存款餘額: " + Balance);
  13.   else
  14.    Balance-=i;
  15.   }
  16.   public int balance(){
  17.    return Balance;
  18.   }
  19.   public void addInterest(){
  20.    Balance+=Balance*APR;
  21.   }
  22.  }
  23. class DepositAccount extends Account{
  24.  DepositAccount(String n,int i){
  25.   name=n;
  26.   if(i==1) APR=0.03;
  27.   else if(i==2) APR=0.04;
  28.   else if(i==3) APR=0.05;
  29.  }
  30. }
  31. class FreeAccount extends Account{
  32.  FreeAccount(String n){
  33.   name=n;
  34.   APR=0.02;
  35.  }
  36. }
  37. class SpecialAccount extends Account{
  38.  SpecialAccount(String n){
  39.   name=n;
  40.   APR=0.02;
  41.  }
  42.  boolean isEmpt(){
  43.   return Balance>10000;
  44.  }
  45. }
  46. class FundAccount{
  47.  String name,type;
  48.  double unit = 0.0;
  49.  FreeAccount freeAccount;
  50.  SpecialAccount specialAccount;
  51.  FundAccount(String n,String t,FreeAccount f,SpecialAccount s){
  52.   name=n;
  53.   type=t;
  54.   freeAccount=f;
  55.   specialAccount=s;
  56.  }
  57.  public void buy(int i,int j){
  58.   try{
  59.    if (specialAccount.isEmpt()){
  60.     freeAccount.withdraw(i);
  61.    }
  62.    else{
  63.     freeAccount.withdraw((int)(i*1.02));
  64.    }
  65.    unit+=1.0*i/j;
  66.   }
  67.   catch(Exception e){
  68.    System.out.println(e.getMessage());
  69.   }
  70.  }
  71.  public int balance(int j){
  72.   return (int)(unit*j);
  73.  }
  74.  double getUnit() {
  75.   return unit;
  76.  }
  77.  public void sell(double i,int j){
  78.   freeAccount.deposit((int)(i*j*0.98));
  79.   unit -= i;
  80.  }
  81. }
  82. class InternetAccount{
  83.  DepositAccount depositAccount;
  84.  FreeAccount freeAccount;
  85.  SpecialAccount specialAccount;
  86.  FundAccount fundAccount;
  87.  InternetAccount(){
  88.   
  89.  }
  90.  public void setDeposit(DepositAccount deposit){
  91.   depositAccount=deposit;
  92.  }
  93.  public void setFree(FreeAccount setFree){
  94.   freeAccount=setFree;
  95.  }
  96.  public void setSpecial(SpecialAccount setSpecial){
  97.   specialAccount=setSpecial;
  98.  }
  99.  public void setFund(FundAccount setFund){
  100.   fundAccount=setFund;
  101.  }
  102.  public int getTotalBalance(){
  103.   return depositAccount.balance()+freeAccount.balance()+specialAccount.balance();
  104.  }
  105. }
  106. class MultiFund{
  107.  HashMap<String,FundAccount> Multi;
  108.  MultiFund(){
  109.   Multi = new HashMap<String, FundAccount>();
  110.  }
  111.  public void addFund(String s,FundAccount Fund){
  112.   Multi.put(s, Fund);
  113.  }
  114.  public void printEachUnit(){
  115.   for(FundAccount f : Multi.values()) {
  116.    System.out.println(f.type + ":" + f.getUnit());
  117.   }
  118.  }
  119.  public int getFundBalance(String s,int i){
  120.   return (int)(* Multi.get(s).getUnit());
  121.  }
  122. }
  123. public class JPA604_5{
  124.  public static void main(String args[]){
  125.   DepositAccount deposit = new DepositAccount("peter"2);
  126.   deposit.deposit(5000);
  127.   FreeAccount free = new FreeAccount("peter");
  128.   free.deposit(20000);
  129.   SpecialAccount special = new SpecialAccount("peter");
  130.   special.deposit(10000);
  131.   deposit.addInterest();
  132.   free.addInterest();
  133.   special.addInterest();
  134.   FundAccount fund = new FundAccount("peter""A", free, special);
  135.   fund.buy(15000500);
  136.   try {
  137.    special.withdraw(5000);
  138.    fund.buy(2000300);
  139.    fund.sell(fund.getUnit()400);  
  140.    InternetAccount internet = new InternetAccount();
  141.    internet.setDeposit(deposit);
  142.    internet.setFree(free);
  143.    internet.setSpecial(special);
  144.    internet.setFund(fund);
  145.    MultiFund multi = new MultiFund();
  146.    multi.addFund("A", fund);
  147.    FundAccount fundB = new FundAccount("peter""B", free, special);
  148.    fundB.buy(200050);
  149.    multi.addFund("B", fundB);
  150.    FundAccount fundC = new FundAccount("peter""C", free, special);
  151.    fundC.buy(500030);
  152.    multi.addFund("C", fundC);
  153.    fund.buy(14000300);
  154.   } catch(Exception e) {
  155.    System.out.println(e.getMessage());
  156.   }
  157.  }
  158. }

TQC+ Java 試題總整理

聲明:

這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血

沒有留言:

張貼留言

歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com