ユーザーが実行する一定量の「ユニット」を自動的に生成するJavaプログラムを作成しています(この質問では実際の目的は重要ではありません)。
これらの「単位」のうち、ユーザーに次の週にいくつ与えるかを決定する良い方法を見つけるのに苦労しています。
計算の意図:
- 特定の週の「単位」を与える
- 実際の曜日 (月~金) に基づいて週の単位を計算します。
- その月のすべての単位を計算します (例: 月の最終週の場合、その週全体のすべての可能な単位を指定します)。
- 見積もる場合は、過大評価する必要があります(プログラムの性質上、過小評価ははるかに悪いでしょう.)
- 単位を小数にすることはできません (したがって、int にキャストされます)
私が持っている変数:
- その月にやるべき「単位」の量
私はこれをいくつかの異なる方法で実行しようとしましたが、これまでのところ、私が持っている最良の方法は次のとおりです。
public static int getRemainingUnitsThisWeek() {
return (int) Math.round(((double) getUnitsThisMonth() / (((30 - (double) DateTime.now().getDayOfMonth()+1) / 7) < 1 ? 1 :
((30 - (double) DateTime.now().getDayOfMonth()+1) / 7))) / (double)DateTime.now().getDayOfWeek());
}
私が最終的に直面する問題 (具体的には、それがどのように行われるかについてはまだ満足していません) は、月の最終週に指定された「単位」がまだ曜日で分割されていることです (どの順番でユーザーは月末までにすべての「ユニット」を受け取る必要がありますが)。
ご不明な点がございましたら、お気軽にお尋ねください。
PS。DateTime.now() 関数で使用しているライブラリはjoda-timeです。