0

CurrentDateシステムの日付を特定の形式(例:2012年6月29日)で表示するクラスを作成しました。クラスは次のようになります:

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()表現が必要なフィールドがありません。次のようなフィールドを宣言する必要があると思います。

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

Eclipse IDE を使用している場合は、toString()メソッドを生成するだけで問題を簡単に解決できます。現在、 objecttoString()が に対して呼び出されますtoString()。実際、ジョシュ・ブロックによると、

人間が読める形式を取得するには、すべてのクラスで toString() をオーバーライドする必要があります。

于 2012-07-29T07:34:15.537 に答える
0

クラスのメソッドをオーバーライドtoStringします。次のように a のようなメソッドを追加します。

@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
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 に答える