2012-09-06 171 views
-1

在我的Java類中,我必須構建一個日曆應用程序。我已經完成了大部分工作,但是我需要一些方法的幫助。我評論過我需要幫助的部分。該代碼包含三個類和一個名爲TestCalendar的主。我需要幫助的函數位於Calendar類中,名爲removeEvent(其中兩個,帶有兩個不同的參數),printEvents和findEvents。提前致謝!Java,創建日曆

這是Date類。

  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; 
    } 
    } 

Calendar類

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]); 
      } 
     } 
    } 
+0

這似乎是功課,所以請標記爲這樣。 –

+0

其實我們不應該在做功課... – Doorknob

+0

@PicklishDoorknob不,但如果它是作業,我們可以給一些有用的提示。當然,我們不會(也不應該)給他解決方案。 – brimborium

回答

1

由於這是功課,我其實不願意做你的功課。所以作爲提示,你想使用(你的事件).equals(與其他事件相比),而不是「==」。

+0

不知道爲什麼它不會正確格式化代碼,但我對for語句有一點問題。我意識到for語句的形式爲(初始化,測試,更新),但我不確定如何將其轉換爲此方法。我理解(至少我認爲)初始化是事件e,並且它需要測試this.events,但是我不知道我應該爲更新部分放置什麼。另外我得到一個類型不匹配。空隙removeEvent(比賽事件) \t \t \t { \t \t \t \t爲(事件e; this.events) \t \t \t \t如果(this.events。等於(E)) \t \t \t \t { \t \t \t numEvents--; \t \t \t \t} \t \t \t \t \t \t \t} – user1294476

+0

哎呀,沒想到按enter會發表評論。 上面我的答案告訴你要做的是,通過事件數組中的每個元素,然後將每個事件與您要刪除的事件進行比較。然後如果它們相等,則從該數組中移除該事件。 實際上,如上所述,你想要使用什麼叫每個循環。它的格式如下:for(初始化一個對象:這些對象的數組) 因此,例如整數對象的情況下, Integer [] numbers = new Integer [5]; (整數i:數字) { //東西 } – Clark

2

好了,你的事件類有一個方法:

public boolean equals(Object obj) 

其中,據推測,應該返回所傳遞的事件是否等於實例。

所以你void removeEvent(Event event)方法應類似於以下內容:

注意到,這是psudo代碼,而不是有效的Java。你將不得不充實自己的細節。

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

的方法,其餘的將或多或少是在概念上的第一個2個不同factorrs相似:

  • 你如何識別匹配
  • 你做什麼用比賽
+0

耶給他一個正確的方向推動,而不是整個答案。 –

+0

耶對於太:d – Doorknob

+0

空隙removeEvent(比賽事件) \t \t \t { \t \t \t \t爲(事件e; this.events) \t \t \t \t如果(this.events.equals(E)) \t \t \t \t { \t \t \t numEvents--; \t \t \t \t} \t \t \t \t \t \t \t} – user1294476