Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MOOC 92.3(我想了解如何解决这个问题,而不仅仅是得到答案)_Java_Date - Fatal编程技术网

Java MOOC 92.3(我想了解如何解决这个问题,而不仅仅是得到答案)

Java MOOC 92.3(我想了解如何解决这个问题,而不仅仅是得到答案),java,date,Java,Date,本练习来自JavaMooc92.3 简单地说,我有两次约会。 还有一种方法让我知道了两者的区别 (例如:2011年10月3日和2012年9月3日) 我的方法指出,只要月和日大于后者,那么只需减去调用该方法的月份 问题是: 如果一个日期作为一个参数有一个更大的年份,那么当我减去这两个时,我会得到一个负数(例如:2011-2012) else之外的代码适用于以下情况:年份不是它看起来的样子(例如:如果我出生于2000年5月,从技术上讲,我应该是20岁,因为它是2020年,但由于它还不是5月,因此我是

本练习来自JavaMooc92.3

简单地说,我有两次约会。 还有一种方法让我知道了两者的区别

(例如:2011年10月3日和2012年9月3日)

我的方法指出,只要大于后者,那么只需减去调用该方法的月份

问题是:

如果一个日期作为一个参数有一个更大的年份,那么当我减去这两个时,我会得到一个负数(例如:2011-2012)

else之外的代码适用于以下情况:年份不是它看起来的样子(例如:如果我出生于2000年5月,从技术上讲,我应该是20岁,因为它是2020年,但由于它还不是5月,因此我是19岁)


我的条件在第一个if语句中仍然满足,即使结果不正确。我试着找到一个案例,在这个案例中,我可以安抚这两种情况,不管什么日期先到,但我正在与逻辑作斗争。希望您能提供意见

首先,如果我正确理解这是一个练习,那么这是一个很好的练习。对于生产工作,人们永远不会发明自己的日期类,而是会并且应该使用标准库中的
LocalDate
作为日期。和
ChronoUnit.YEARS.between()
查找您的年龄

如果你今年还没有过生日,你想从结果中减去一年。这是正确的。那么,我们如何确定今年的生日是否在未来?看看下面的可能性。我没有运行你的代码,所以我已经填写了我认为阅读代码会发生的事情的最后一列

Today  Birthday  Subtract 1?  Does your code subtract 1?
--------------------------------------------------------
Apr 3  Feb 1     No           No
Apr 3  Feb 6     No           Yes
Apr 3  Apr 1     No           No
Apr 3  Apr 6     Yes          Yes
Apr 3  May 1     Yes          Yes
Apr 3  May 6     Yes          Yes
提出这个问题的另一种方式是:如果月份不同,我们是否也需要比较月份的哪一天

我喜欢你的态度。根据你的标题,我没有给出正确的工作代码。我也相信,你不仅会从自己的写作中学到更多,还会给你带来更大的乐趣。如果你仍然被卡住,请留下评论,我会再看一眼


编辑:对于在日期顺序相反的情况下获得否定结果的问题:最简单的解决方案是在计算后检查结果。如果为负数,请使用反转的日期重新进行整个计算。也就是说,与
这个。
比较日期。
在彼此的位置。一个elegent选项是,在本例中,您告诉另一个
MyDate
对象进行计算。调用另一个对象的
differenceInYears
方法,将
this
作为参数传递。

我将报告我的操作,或者如果我再次卡住。非常感谢。
Today  Birthday  Subtract 1?  Does your code subtract 1?
--------------------------------------------------------
Apr 3  Feb 1     No           No
Apr 3  Feb 6     No           Yes
Apr 3  Apr 1     No           No
Apr 3  Apr 6     Yes          Yes
Apr 3  May 1     Yes          Yes
Apr 3  May 6     Yes          Yes