Java Return语句没有以正确的格式返回输出 /** *计算并返回感恩节的日期 *在某一年。 * *注:根据法律,感恩节是11月的第四个星期四 * *@param year计算感恩节日期的年份 *@返回指定年份的感恩节日期 */ 公开日期(国际年) { int weekcount=0;//记录已过去的周数 感恩节日期=新的日期(11,1,年); 而(周数

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

我不应该使用println语句,而是应该使用return语句返回正确的日期。问题是我得到了这个“Date@2f4d3709“作为我的输出。 日期类--

如果尝试调用,则该对象将使用转换为
字符串。由于您的
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());