Arrays die einen Termin speichen

vjung

Aktives Mitglied
Hallo, ich muss einen Terminkalender erstellen mit den Möglichkeiten:
-Termin anlegen
-Termin ausgeben
-Termin ändern
-Termin löschen

Der Termin muss beinhalten:
Betreff,
Ort,
Beginn: Datum (Tag, Monat, Jahr) + Uhrzeit (Stunden, Minuten),
Ende: Datum (Tag, Monat, Jahr) + Uhrzeit (Stunden, Minuten),
Namen der Teilnehmer


So nun sitze ich davor und weiß in erster Linie nicht so richtig wo ich nun die Arrays erstellen muss und wo ich sie dann übergebe.
Hier mal mein Code den ich bisher habe:

Die main: (2 Fragen sind durch Kommentare markiert)
Java:
public static void main(String[] args)
  {
    int jahr, monat, tag, stunde, minute;  //einfach mal angelegt, weiß nicht ob ich das hier schon brauch

    //<<<<<- 1. muss ich hier bereits ein Array erstellen?
   
   
    Scanner sc = new Scanner(System.in);
    int auswahl =0;
   
    System.out.println("TERMINKALENDER ");
   
    for(int i =0; i<5; i++){  //Abstandhalter
    System.out.println();
    }

    do{      //Hauptschleife mit Menü
    System.out.println("\t\tWillkommen bei ihrem persönlichen Terminkalender!");
    System.out.println("\n\nBitte treffen Sie eine Auswahl:\n\n");
    System.out.println("1 eingeben für: Termin anlegen\n");
    System.out.println("2 eingeben für: Termine tabellarisch auflisten\n");
    System.out.println("3 eingeben für: Termin bearbeiten\n");
    System.out.println("4 eingeben für: Termin löschen\n");
    System.out.println("5 eingeben für: Programm beenden.\n\n\n\n");
    auswahl = sc.nextInt();
        switch(auswahl){
        case 1: TerminDatum t1 = new TerminDatum(); // 2. Wenn ich einen weiteren Termin anlege wird der dann hier nicht den ersten überschreiben?
            t1.terminEingeben();
       
                         
    }
    }
    while(auswahl !=5);
  }

Die Klasse TerminDatum: (Fragen gekennzeichnet durch 2.1 ...
Java:
class TerminDatum
{
  Schaltjahr dannhaltso = new Schaltjahr();
  Scanner sc = new Scanner(System.in);
  //2.1 Muss ich hier ein Array erstellen? oO
  int jahr, monat, tag, stunde, minute;
  int stundeEnd, minuteEnd;
  String terBetreff, teilnehmerName;
  boolean schaltjahr;

  public void terminEingeben()
  {
    System.out.print("Bitte geben Sie das Jahr des Termines ein: ");
    jahr = sc.nextInt();

    schaltjahr = dannhaltso.berechnung(jahr);
   
    System.out.print("\nBitte geben sie den Monat(1-12) ein: ");
    monat = sc.nextInt();
   
    if(schaltjahr == true){
        if(monat<7 && monat%2 != 0 || monat>7 && monat%2 ==0 ){
          System.out.print("\nBitte geben Sie den Tag(1-31) ein: ");
          tag = sc.nextInt();
        }
        else if(monat == 2){
          System.out.print("\nBitte geben Sie den Tag(1-29) ein: ");
          tag = sc.nextInt();
        }
        else{
          System.out.print("\nBitte geben Sie den Tag(1-30) ein: ");
          tag = sc.nextInt();
        }
    }
    else{
        if(monat<7 && monat%2 != 0 || monat>7 && monat%2 ==0 ){
       System.out.print("\nBitte geben Sie den Tag(1-31) ein: ");
       tag = sc.nextInt();
    }
    else if(monat == 2){
       System.out.print("\nBitte geben Sie den Tag(1-28) ein: ");
       tag = sc.nextInt();
    }
    else{
       System.out.print("\nBitte geben Sie den Tag(1-30) ein: ");
       tag = sc.nextInt();
    }  
    }
    System.out.print("\nZu welcher Stunde(0-23) startet der Termin?: ");
      stunde = sc.nextInt();

    System.out.print("\nZu welcher Minute(0-59) startet der Termin?: ");
      minute = sc.nextInt();

    System.out.print("\nZu welcher Stunde(0-23) endet der Termin?: ");
      stundeEnd = sc.nextInt();

    System.out.print("\nZu welcher Minute(0-59) endet der Termin?: ");
      minuteEnd = sc.nextInt();
   
    System.out.print("\nBitte nennen Sie den Betreff des Termines: ");
      terBetreff = sc.next();

    System.out.println("Bitte geben Sie die Namen der Teilnehmen an(z.B.: Gerard Depardieu, Franz Schubert, Vladimir Putin) : ");
      teilnehmerName = sc.next();
     
      // 2.2 Kann ich hier dann den Array mit den Daten füllen?

    System.out.println("\n\n Ihr Termin wurde erfolgreich erstellt. ");
  }
}

Also mein Hauptproblem ist es das ich nicht so recht weiß wo ich das array erstellen soll und mit wievielen Dimensionen. Meiner Vermutung nach denke ich an sowas:
String[][][][][][][] = new String[jahr][monat][tag][StundeAnfang][StundeEnde][MinuteAnfang][MinuteEnde]

Aber das überfordert mich gerade ein bischen oO
 
Ich habe das jetzt nur überflogen, aber ich würde eine Klasse erstellen (Termin), die die Variablen Betreff, Ort, .. aufnimmt (im Konstruktor). Dann kannst du ein Array mit Terminen erstellen
Java:
Termin[] terminkalender = {termin1, termin2,...};
 
Wie würde ich das schreiben damit jedesmal ein neues Objekt erzeugt wird wenn der Aufrufer einen neuen Termin einträgt?
 
Java:
terminkalender [x] = new Termin (...)
// X ist die Position, wo der neue Termin eingefügt wird.
// ... sind die Parameter für den Konstruktor
 
Das kommt ganz darauf an, wie du auf dein Array zugreifen willst.
Eine Schleife macht nur Sinn, wenn du in einem Rutsch viele Termine erzeugen willst, was wohl eher selten der Fall ist.
X könnte eine Indexvariable vom Typ int sein, mit der du dir die erste freie Position deines Arrays merkst... ist aber tricky, wenn man einen Termin mitten im Array löscht und alle hinteren Termine aufrutschen. Dann dard man seinen Index nicht vergessen.
Für sowas was du hier erstellen sollst würde man auch kein simples Array nehmen, sondern eher eine Collection, die sich selbst um das Einfügen und Löschen kümmert.
Hattet ihr sowas noch nicht?
Zurück zum Thema... mit x meinte ich einfach einen Punkt an dem ein neuer Termin eingefügt werden soll. Wie du diesen Punkt bestimmst musst du selbst entscheiden
 

Zurück
Oben