-1

私の Java クラスでは、カレンダー アプリケーションを作成する必要があります。ほぼ完成しましたが、いくつかの方法で助けが必要です。助けが必要な部分をコメントしました。このコードには、3 つのクラスと TestCalendar という名前のメインが含まれています。ヘルプが必要な関数は、removeEvent (そのうちの 2 つは 2 つの異なる引数を取る)、printEvents、および findEvents という名前の Calendar クラスにあります。前もって感謝します!

これが日付クラスです。

            public class Date {
    int year, month, day;
    //constructor
    public Date(int yr, int mth, int dy){
    year = yr;
    if (yr < 2000  || yr > 2100)
    {
        System.out.println("Wrong Calander Year");
        System.exit(1);
    }
    month = mth;
    if (mth < 1 || mth > 12)
    {
        System.out.println("Wrong Month");
        System.exit(1);
    }
    day = dy;
    if (dy < 1 || dy > 31)
    {
        System.out.println("Wrong Day");
        System.exit(1);
    }

    }
    //accessor methods
    public int getYear()
    {
        return year;
    }
    public int getMonth()
    {
        return month;
    }
    public int getDay()
    {
        return day;
    }
    //returns date in correct format
    public String toString()
    {
        return "" + month + "/" + day + "/" + year;
    }
    }

ここにイベントクラスがあります

    public class Event {
    Date date;
    int hour;
    String activity;

    Event(int year, int month, int day, int hour, String activity)
    {
        if (year < 2000  || year > 2100)
        {
            System.out.println("Wrong Calander Year");
            System.exit(1);
        }
        if (month < 1 || month > 12)
        {
            System.out.println("Wrong Month");
            System.exit(1);
        }
        if (day < 1 || day > 31)
        {
            System.out.println("Wrong Day");
            System.exit(1);
        }
        this.date = new Date(year, month, day);
        this.hour = hour;
        this.activity = activity;

    }
    public Date getDate()
    {
    return date;    
    }
    public int getHour()
    {
        return hour;    
    }
    public String getActivity()
    {
        return activity;
    }
    void setActivity(String newActivity) 
    {
        this.activity = newActivity;
    }
    public String toString()
    {
    return "" + date +" " + "@" + hour +":" + " " + activity;
    }
    public boolean equals(Object obj)
    {
    if (obj instanceof Event)   
    {
        return true;
    }
    else return false;
    }
    }

カレンダー クラス

    public class Calander {
        static final int MAXEVENTS = 10;
        Event[] events;
        int numEvents;

        // constructor
        public Calander() {
            numEvents = 0;
            events = new Event[MAXEVENTS];
        }

        void addEvent(int year, int month, int day, int hour, String activity) {
            Event newEvent = new Event(year, month, day, hour, activity);
            events[numEvents] = newEvent;
            numEvents++;
        }


        void removeEvent(int year, int month, int day, int hour, String activity) {


            {
             if (events[numEvents] == null);
             numEvents--;    
            }
        }

        // instructions say to remove (all) Event objects in the Calendar that are equals to the event argument.  Use the equals method from the event class

        void removeEvent(Event event) {

    //what to put here?
        }

        // this method needs to print every Event in the associated Calendar that matches the date arguments.  Print each on a separate line, using the toString method from the Event class.

        void printEvents(int year, int month, int day) { // how to set equality
    if (this.events[numEvents] == )
            {
                // what to put here?
            }
        }

        // same as above but matches the (Date date) arguments
        void printEvents(Date date) {
                toString();
        }

        // Return the first Event in the Calendar that has a matching (equals) activity field.  If no match is found, you must return a reference type, so return null.

                    Event findEvent(String activity) {
                            //what to put here?
            return null;
        }


        void dump() {

            for (int i = 0; i < MAXEVENTS; i++)
            {
                if (events[i] != null)
                System.out.println(events[i]);
            }
        }
    }
4

2 に答える 2

2

さて、あなたのイベントクラスにはメソッドがあります:

public boolean equals(Object obj)

おそらく、渡されたイベントがインスタンスと等しいかどうかを返す必要があります。

したがって、void removeEvent(Event event)メソッドは次のようになります。

これは疑似コードであり、有効な Java ではないことに注意してください。自分で詳細を肉付けする必要があります。

void removeEvent(Event event) 
{
    foreach(event e in this.events)
    {
        if(event.equals(e))
        {
            // remove e from the events array
        }
    }
}

残りのメソッドは、2 つの異なる要素を使用する最初のメソッドとコンセプトがほぼ同じになります。

  • 一致を識別する方法
  • 試合で何をするか
于 2012-09-06T21:29:41.497 に答える
1

これは宿題なので、本当はあなたの宿題をしたくありません。したがって、ヒントとして、「==」ではなく、(自分のイベント).equals(他のイベントとの比較)を使用する必要があります。

于 2012-09-06T21:29:12.667 に答える