-1

私がやろうとしているのは、オブジェクトにアクセスすることです。この場合は、日、月、年の 3 つの属性を持つ date1 です。オブジェクト情報を 1 日前に文字列形式で表示する showTomorrow() というメソッドを作成しようとしています。これは、元のオブジェクトの属性を変更できないことを意味します。

私は Data.java プログラムを作成しました。誰かが私を正しい方向に向けたり、それが本当に役立つものを示してくれれば、それを以下に示します。

これは、私が信じている主な方法で本質的に実行しているものです。

**Date date1 = new Date(30, 12, 2013)** // instantiate a new object with those paramaters

**date1.showDate();** // display the original date

**date1.tomorrow();** // shows what that date would be 1 day infront

問題は、現在何も表示されていないことです。dayTomorrow = this.day++; と言ってそう思いました。デフォルト値 + 1 日を変数 dayTomorrow に追加していました。

public class Date
{
    private int day;
    private int month;
    private int year;
    private int dayTomorrow;
    private int monthTomorrow;
    private int yearTomorrow;

    public Date()
    {
            day = 1;
            month = 1;
            year = 1970;
    }
    public Date(int inDay, int inMonth, int inYear)
    {
            day = inDay;
            month = inMonth;
            year = inYear;
    }
    public void setDate(int inDay, int inMonth, int inYear)
    {
            day = inDay;
            month = inMonth;
            year = inYear;
    }
    public String getDate()
    {
            String strDate;
            strDate = day + "/" + month + "/" + year;
            return strDate;
    }
    public String getTomorrow()
    {
            String strTomorrow;
            strTomorrow = dayTomorrow + "/" + monthTomorrow + "/" + yearTomorrow;
            return strTomorrow;
    }
    public String tomorrow()
    {
            dayTomorrow = this.day++;
            monthTomorrow = this.month;
            yearTomorrow = this.year;

            if(dayTomorrow > 30)
            {
                    dayTomorrow = 1;
                    monthTomorrow = this.month++;
            }
            if(monthTomorrow > 12)
            {
                    monthTomorrow = 1;
                    yearTomorrow = this.year++;
            }

            return getTomorrow();
    }
    public void showDate()
    {
            System.out.print("\n\n THIS OBJECT IS STORING ");
            System.out.print(getDate());
            System.out.print("\n\n");
    }
    public void showTomorrow()
    {
            System.out.print("\n\n THE DATE TOMORROW IS ");
            System.out.print(getTomorrow());
            System.out.print("\n\n");
    }
    public boolean equals(Date inDate)
    {
            if(this.day == inDate.day && this.month == inDate.month && this.year == inDate.year)
            {
                    return true;
            }
            else
            {
                    return false;
            }
    }
}
4

4 に答える 4

2

++this.day、、を使用する必要が++this.monthあり++this.yearます。使用するthis.day++と、新しい値ではなく、前の日付の値が返されます。を前面に置くと++問題が解決します。また、day値を変更します...これをに変更することをお勧めしますthis.day + 1

于 2013-03-04T19:54:50.500 に答える
0

Java でネイティブの日付サポートを使用できますが、正しい練習をしていると思いますか?

これでうまくいくはずです:

public class Date {
    private int day = 1;
    private int month = 1;
    private int year = 1970;
    private int dayTomorrow = day+1;
    private int monthTomorrow;
    private int yearTomorrow;

    public Date()
    {
            tomorrow();
    }
    public Date(int inDay, int inMonth, int inYear)
    {
            day = inDay;
            month = inMonth;
            year = inYear;
            tomorrow();
    }
    public void setDate(int inDay, int inMonth, int inYear)
    {
            day = inDay;
            month = inMonth;
            year = inYear;
    }
    public String getDate()
    {
            String strDate;
            strDate = day + "/" + month + "/" + year;
            return strDate;
    }
    public String getTomorrow()
    {
            String strTomorrow;
            strTomorrow = dayTomorrow + "/" + monthTomorrow + "/" + yearTomorrow;
            return strTomorrow;
    }
    public void tomorrow()
    {
            monthTomorrow = this.month;
            yearTomorrow = this.year;

            if(dayTomorrow > 30)
            {
                    dayTomorrow = 1;
                    monthTomorrow = this.month++;
            }
            if(monthTomorrow > 12)
            {
                    monthTomorrow = 1;
                    yearTomorrow = this.year++;
            }
    }
    public void showDate()
    {
            System.out.print("\n\n THIS OBJECT IS STORING ");
            System.out.print(getDate());
            System.out.print("\n\n");
    }
    public void showTomorrow()
    {
            System.out.print("\n\n THE DATE TOMORROW IS ");
            System.out.print(getTomorrow());
            System.out.print("\n\n");
    }
    public boolean equals(Date inDate)
    {
            if(this.day == inDate.day && this.month == inDate.month && this.year == inDate.year)
            {
                    return true;
            }
            else
            {
                    return false;
            }
    }
}

私が行った変更を注意深く見てください;)主なものは次のとおりです。

public static void main(String[] args) {
    Date d = new Date();
    d.showDate();
    d.showTomorrow();
}
于 2013-03-04T20:12:47.987 に答える
0

出力を表示するために、date1.tomorrow() の後に showDate() を呼び出していますか?

date1.tomorrow();または呼び出す代わりにdate1.showTomorrow();

于 2013-03-04T20:01:07.967 に答える
0

これを見てください:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html

ポスト インクリメント ...

于 2013-03-04T20:08:46.937 に答える