Java Return语句没有以正确的格式返回输出 /** *计算并返回感恩节的日期 *在某一年。 * *注:根据法律,感恩节是11月的第四个星期四 * *@param year计算感恩节日期的年份 *@返回指定年份的感恩节日期 */ 公开日期(国际年) { int weekcount=0;//记录已过去的周数 感恩节日期=新的日期(11,1,年); 而(周数
我不应该使用println语句,而是应该使用return语句返回正确的日期。问题是我得到了这个“Date@2f4d3709“作为我的输出。 日期类--如果尝试调用,则该对象将使用转换为Java Return语句没有以正确的格式返回输出 /** *计算并返回感恩节的日期 *在某一年。 * *注:根据法律,感恩节是11月的第四个星期四 * *@param year计算感恩节日期的年份 *@返回指定年份的感恩节日期 */ 公开日期(国际年) { int weekcount=0;//记录已过去的周数 感恩节日期=新的日期(11,1,年); 而(周数,java,Java,我不应该使用println语句,而是应该使用return语句返回正确的日期。问题是我得到了这个“Date@2f4d3709“作为我的输出。 日期类--如果尝试调用,则该对象将使用转换为字符串。由于您的Date类不重写toString(),因此将使用java.lang.Object提供的默认实现 你可以用三种方法来解决这个问题 您需要调用Date.getLongDate()方法并将返回的值传递给输出,而不是整个对象 将gethanksgiving(int)的返回值更改为字符串,并返回Date.ge
字符串。由于您的Date
类不重写toString()
,因此将使用java.lang.Object
提供的默认实现
你可以用三种方法来解决这个问题
您需要调用Date.getLongDate()
方法并将返回的值传递给输出,而不是整个对象
将gethanksgiving(int)
的返回值更改为字符串,并返回Date.getLongDate()
在Date
类中重写toString()
,如下所示
例如:
/**
* Computes and returns the Date on which Thanksgiving will fall
* in a given year.
*
* NOTE: By law, Thanksgiving is the 4th Thursday in November
*
* @param year the year for which to compute the date of Thanksgiving
* @return the Date of Thanksgiving for the specified year
*/
public Date getThanksgiving(int year)
{
int weekcount = 0 ; // record the amount of weeks that has passed
Date thanksgiving = new Date (11 , 1 , year) ;
while ( weekcount < 4 )
{
thanksgiving.next(); // add one to date
if (thanksgiving.getDayOfWeek().equals("Thursday"))// check if the day of week is Thursday
{
weekcount++ ; // add one to weekcount
}
if (weekcount == 4)
{
System.out.println(thanksgiving.getLongDate());
}
}
return thanksgiving ;
}
您的方法返回一个Date
对象,由于类中未实现toString()
,因此打印对象的格式如下Date@2f4d3709“当你做这样的事情时
@Override
public String toString(){
return getLongDate();
}
相反,您必须调用getLongDate()
以获取要打印的格式化字符串
System.out.println(getThanksgiving(2014));
因此,我无法使用return语句获取日期。@Name告诉我date
的实现,我就能告诉你了。非常感谢你的帮助。我不清楚他是在代码摘录中谈论println
的输出还是println
(未显示)在给定方法的返回上运行?如果前一个日期
执行不正确,或者显示的代码与运行时不匹配。如果是后者,那么这个答案是正确的+对不起,我想我提到了我的全部产出。println语句是正确的,我得到了正确的日期。错误在return语句中。那是我得到的”Date@2f4d3709". 我的问题是,我是否可以修复return语句,以便从中获取正确的日期,因为我不应该从println语句中获取输出。您可以将return类型更改为String
并返回thankage.getLongDate()
。或者在返回日期后使用对象。我无法将返回类型更改为字符串,因为讲师指定方法标题必须是这样。有没有其他方法可以修复我的返回语句?没有,没有。没错。您对返回的对象所做的操作似乎是错误的。
System.out.println(getThanksgiving(2014).getLongDate());