2010-11-25 15 views
0

毎年特定の月より前に別の番号に番号を追加する方法をどのようにコードすることができますか?たとえば、銀行で年に最大預金額を持つことができますし、翌年には最大預金額が再び始まります。Java - 毎年特定の月の前

+0

私はあなたが何を意味するか分かりません。プログラムが実行されている場合は、毎年特定の時間にトリガされるメソッドが必要ですか?または、日付や日数を計算しようとしていますか? – DGH

+0

私は銀行で年間最大預金金額を保有したいと考えています。その後、翌年に最大預金額が再び始まります。 – Chris

答えて

0

あなたのコメントに基づいて、あなたが必要と思うのは、境界チェックと調整がまだ行われていないかどうかのフラグです。

このように、入金方法では、現在の日付が最大金額がリセットされた日の前後かどうかを確認します。それが後であり、今年まだリセットしていない場合は、リセットしてください。

0

あなたがamountLeftForDepositとyearLastUpdatedの永続性の世話をする必要があります

private static final double YEARLY_MAXIMUM = 100000; 

void deposit(double amount) { 
    if (yearLastUpdated != thisYear) { 
     amountLeftForDeposit = YEARLY_MAXIMUM; 
     yearLastUpdated = thisYear; 
    } 
    /* ... Code for deposit, checking that we're not busting this year's limit. */ 
} 

のようなものを持つことができます。私はあなたがDateクラスを通してthisYearを簡単に得ることができると思います。

+0

一度に複数のデポジットがある場合(銀行とアカウントの所有者としましょう)、方法(またはその一部)はロックと同期する必要があります。そうでなければスレッドは同じメソッドに同時にアクセスでき、YEARLY_MAXIMUMを超える可能性があります。 – heikkim

0

M. Joanisの答えに加えて(私のコメントを参照してください):私は仮定してい

、ラッピングタイプがアカウントまたは類似..銀行口座を描いているものです。あなたの預金方法は次のように同期されます。

void deposit(double amount) { 
    synchronized(this /* Account class instance */) { 

    } 
} 

同期化は、同時アクセスから問題を引き起こさないようにします。人々はお金の中で最も賢明です。

関連する問題