0

我创建了一个CurrentDate以特定格式显示系统日期的类(例如 29-JUN-12)。该类看起来像:

package getset;

import java.util.*;
import getset.Getset;
public class CurrentDate{
    public static void main(String[] args){
        Calendar cal = new GregorianCalendar();
        int month = cal.get(Calendar.MONTH);
        int year = cal.get(Calendar.YEAR);
        int day = cal.get(Calendar.DAY_OF_MONTH);

        String toyear=String.valueOf(year);
        String newyear=toyear.substring(2,4);
        String newmonth=monthvalidation(month);
        System.out.println("Current date : " + day + "-" + (newmonth) + "-" + newyear);
    }

    private static String monthvalidation(int initmonth) {
        // TODO Auto-generated method stub
        //int initmonth=i;
        String finalmonth="";
        if(initmonth==1)
        {
            finalmonth="JAN";
        }
        if(initmonth==2)
        {
            finalmonth="FEB";
        }
        if(initmonth==3)
        {
            finalmonth="MAR";
        }
        if(initmonth==4)
        {
            finalmonth="APR";
        }
        if(initmonth==5)
        {
            finalmonth="MAY";
        }
        if(initmonth==6)
        {
            finalmonth="JUN";
        }
        if(initmonth==7)
        {
            finalmonth="JUL";
        }
        if(initmonth==8)
        {
            finalmonth="AUG";
        }
        if(initmonth==9)
        {
            finalmonth="SEP";
        }
        if(initmonth==10)
        {
            finalmonth="OCT";
        }
        if(initmonth==11)
        {
            finalmonth="NOV";
        }
        if(initmonth==12)
        {
            finalmonth="DEC";
        }    
        return finalmonth;
    }
}

现在,当我尝试使用它进行转换时,toString()它并没有显示出预期的结果。我试过:

CurrentDate date=new CurrentDate();
String sysdate=date.toString();
System.out.println(""+sysdate);

它显示类似:getset.CurrentDate@18a178a这不是人类可读的预期格式。我能做些什么来纠正这个问题?

4

5 回答 5

0

在你的类中覆盖toString方法。添加如下方法。

@Override
public String toString() {

    return day + "-" + newmonth + "-" + newyear;
}
于 2012-07-29T06:50:57.423 回答
0

您需要覆盖该toString方法。

在你的CurrentDate课堂上,添加一些像

@Override
public String toString() {
    String toyear=String.valueOf(year);
    String newyear=toyear.substring(2,4);
    String newmonth=monthvalidation(month);
    return day + "-" + newmonth + "-" + newyear;
}
于 2012-07-29T06:51:37.267 回答
0

您没有覆盖要测试您的方法的Object实现toString() ,您可以快速将您开发的逻辑放入public String toString()方法中。然后在您的main方法中,创建一个CurrentDate并打印toString.

于 2012-07-29T06:51:46.363 回答
0

我在您的代码中看到了问题。首先,您没有想要toString()表示的字段。我认为您需要声明以下字段:

int month;
int year ;
int day;
 @Override
public String toString() {
    return "CurrentDate [month=" + month + ", year=" + year + ", day="
            + day + "]";
}

如果您使用的是 Eclipse IDE,只需生成toString()方法,这将是您问题的简单解决方案。现在,toString()为您的toString(). 事实上,正如乔什·布洛赫所说,

每个类都应该覆盖 toString() 以获得人类可读的格式。

于 2012-07-29T07:34:15.537 回答
0
CurrentDate date=new CurrentDate();
String sysdate=date.toString();
System.out.println(""+sysdate);

In your above code you are using date object but not assigning  any value , only CurrentDate  class reference. so your are getting 'getset.CurrentDate@18a178a' when use toString() method.

If you want to format date to string you have to use 

public static final String DATE_FORMAT_NOW = "dd-MMM-yy";

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
于 2012-07-29T08:11:26.683 回答