Java 计算一周';单位的价值是多少

Java 计算一周';单位的价值是多少,java,algorithm,datetime,methods,Java,Algorithm,Datetime,Methods,我正在编写一个Java程序,自动生成一定数量的“单位”供用户使用(实际用途在这个问题中并不重要) 我正在努力找到一个好方法来确定下周给用户提供多少这样的“单位” 计算意图: 给出特定周的“单位” 根据一周中的实际日期(周一至周五)计算一周的单位 说明该月的所有单位(例如,如果是该月的最后一周,请给出该周所有可能的单位) 如果估算,则应高估(由于项目的性质,低估的情况会更糟。) 单位不能是小数(因此转换为整数) 我有: 当月要完成的“单位”数量 我尝试了几种不同的方法,到目前为止,我最好的

我正在编写一个Java程序,自动生成一定数量的“单位”供用户使用(实际用途在这个问题中并不重要)

我正在努力找到一个好方法来确定下周给用户提供多少这样的“单位”

计算意图:

  • 给出特定周的“单位”
  • 根据一周中的实际日期(周一至周五)计算一周的单位
  • 说明该月的所有单位(例如,如果是该月的最后一周,请给出该周所有可能的单位)
  • 如果估算,则应高估(由于项目的性质,低估的情况会更糟。)
  • 单位不能是小数(因此转换为整数)
我有:

  • 当月要完成的“单位”数量
我尝试了几种不同的方法,到目前为止,我最好的方法是:

 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());
 }
public static int getRemainingUnitsThisWeek(){
return(int)Math.round(((双精度)getUnitsThisMonth()/((30-(双精度)DateTime.now().getDayOfMonth()+1)/7)<1?1:
((30-(双精度)DateTime.now().getDayOfMonth()+1)/7))/(双精度)DateTime.now().getDayOfWeek());
}
我最终遇到的问题(特别是,我仍然不满意它是如何做到的)是,在一个月的最后一周给出的“单位”仍然除以一周中的某一天(这反过来会让你每天得到一个更低的数字——尽管用户需要在月底之前收到所有的“单位”)

如果你有任何问题,尽管问吧


另外,我在DateTime.now()函数中使用的库是。

您的描述令人困惑,因此我不确定是否可以直接回答。相反,我将回答一个不同的问题,这可能会有所帮助:

我有很多单元要做,这个月剩下的时间要做。 我今天应该做多少

我不知道Joda的情况,但是使用标准的
Date
API,您可以使用
Date
获取表示月底的日期,使用类似的技术获取表示今天结束的日期,以及
new Date()
获取当前时间。然后减去它们的
getTime()
s。现在您已经知道离一天结束和一个月结束还有多少毫秒了,您就可以分配您的单位了

units_today = total_units_to_do * milliseconds_to_end_of_today /
  milliseconds_to_end_of_month;

我不懂java,所以我不会尝试编写代码,但我建议您先计算
daysLeftInMonth
daysLeftInWeek
。一旦你把这些工作做得很好,你就有两个简单的例子:一个月会在一周之前结束,另一个月不会结束


在第一种情况下,算法的其余部分很简单。在第二种情况下,计算每天应该有多少个单位(四舍五入),然后乘以一周剩下的天数。

不特别,至少对我来说不是。我也看不到其他人的答案。我现在没有时间重写它。我在这里很新,编辑问题还是用不同的措辞重新发表文章更好?这取决于你所做的事情,但是如果你没有得到答案,请考虑清楚你的问题,让它更容易理解。我们是志愿者,虽然你可能没有太多时间,但你要求我们提供免费帮助,因此你有责任尽可能清楚地阐述你的问题。我们只要求你尽可能多的努力去问你的问题,就像你希望别人回答一样,这并不是要求太多。