2017-01-03 1 views
-1

В настоящее время я пытаюсь закодировать календарь с помощью java. я создал 3-х классов:Как пользователь может создавать даты в моем календаре (java)?

1. Дата (включая год, месяц ....)

2. Termin (включает в себя людей, место, класс Дата ... + опцион на создать даты)

3. Главный класс Мой основной класс, содержащий меню.

Моя проблема в том, что я не знаю, как пользователь может создать свою собственную дату, потому что я должен сам создать объект Termin ... Итак, может кто-нибудь помочь мне исправить это? Thx заранее!

public class Termin { 
private String mBetreff, mOrt, mNamen; 
private Datum mBeginn, mEnde; 

Termin(String betreff, String ort, String namen, Datum beginn, Datum ende) { 
    mBetreff = betreff; 
    mOrt = ort; 
    mNamen = namen; 
    mBeginn = beginn; 
    mEnde = ende; 
} 

public void erstellen() { 
    Scanner read = new Scanner(System.in); 
    System.out.println("Gib 1. Betreff 2. Ort 3. Namen 4. Beginn 5. Ende ein"); 
    mBetreff = read.nextLine(); 
    mOrt = read.nextLine(); 
    mNamen = read.nextLine(); 
} 

public String toString() { 
    return "Betreff: " + mBetreff + "\nOrt: " + mOrt + "\nTeilnehmer: " + mNamen + "\nEs beginnt am " + mBeginn 
      + " und endet am " + mEnde; 
} 
} 

public class Datum { 
private int mJahr, mTag, mMonat, mStunden, mMinuten; 

Datum(int jahr, int monat, int tag, int stunden, int minuten) { 
    mTag = tag; 
    mJahr = jahr; 
    mMonat = monat; 
    mStunden = stunden; 
    mMinuten = minuten; 
} 

public String toString() { 
    return "\n" + mTag + "." + mMonat + "." + mJahr + " um " + mStunden + ":" + mMinuten; 
} 

public void datumEingeben() { 
} 
} 
+0

Пожалуйста, переводить критические участки кода, такие как эти имена аргументов переполнение стека. английский. –

ответ

0

Создание экземпляра-метод для создания встречи вроде ... странно, так как нужно создать назначение (так называемый Termin в вашем случае), чтобы назначить встречу. Одна из возможностей - builder pattern. Имея общественный статический внутренний класс строителя, вы можете установить конструктор (ы) частный и обеспечить использование этого строителя:

public class Main { 

    private int value; 

    private Main(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return (this.value); 
    } 

    public static class MainBuilder { 

     boolean valueWasSet; 
     int value; 

     public MainBuilder() { 
      this.valueWasSet = false; 
      this.value = -1; 
     } 

     public void setValue(int value) { 
      this.value = value; 
      this.valueWasSet = true; 
     } 

     public Main build() { 
      if (!this.valueWasSet) { 
       throw new IllegalStateException("value must be set before a Main can be build."); 
      } 

      return (new Main(this.value)); 
     } 
    } 
} 

(это упрощенный эскиз, чтобы показать основной механизм, как утверждать, что некоторые . значения задаются перед тем построения Main через MainBuilder

процесс построения Main бы:

MainBuilder builder = new MainBuilder(); 

builder.setValue(100); 
// all following Main's will have a value of 100 
Main mainOne = builder.build(); 
Main mainTwo = builder.build(); 

builder.setValue(200); 
// all following Main's will have a value of 200 
Main mainThree = builder.build(); 
Main mainFour = builder.build(); 
+0

Спасибо! я ценю вашу помощь – Coldvirus