Ausgabe in ein Array schreiben

karlmasutra

Mitglied
Hallo zusammen,
ich habe folgendes Problem. Ich soll eine Terminverwaltung programmieren, welche die Termine in Arrays speichert, welche ich dann später vergleichen, sortieren usw soll.

Ich habe folgende Klassen erstellt.

Termin
Code:
public abstract class Termin{
  protected Datum datum;
  protected Zeit zeit;
  protected String ort;
 
      public Termin(Datum datum, Zeit zeit, String ort) {
      setDatum(datum);
      setZeit(zeit);
      setOrt(ort);
    }
   
    public Datum getDatum(){
      return datum;
    }
    public void setDatum(Datum datum) {
      this.datum = datum;
    }
   
    public Zeit getZeit(){
      return zeit;
    }
    public void setZeit(Zeit zeit) {
      this.zeit = zeit;
    }
   
    public String getOrt(){
      return ort;
    }
    public void setOrt(String ort) {
      this.ort = ort;
    }
   
    public String toString() {       
        return "Der Termin ist am "+datum +", um " +zeit +", in " +ort;
    } 

   
}

PrivatTermin
Code:
public class PrivatTermin extends Termin {
  private String beschreibung;
 
  public PrivatTermin(Datum datum, Zeit zeit, String ort,String beschreibung) {
    super(datum,zeit,ort);
      setBeschreibung(beschreibung);
  }
 
  public String getBescheidung(){
    return beschreibung;
  }     
  public void setBeschreibung(String beschreibung) {   
      this.beschreibung = beschreibung; 
  }

  public String toString() {
      return "\nDer Termin ist am "+datum +", um "+zeit +", in "+ort+"\nGrund des Termins: "+beschreibung+"\n";
  }
}

BueroTermin
Code:
public class BueroTermin extends Termin {
  private String teilnehmer;
 
  public BueroTermin(Datum datum, Zeit zeit, String ort,String teilnehmer) {
    super(datum,zeit,ort);
      setTeilnehmer(teilnehmer);
  }

  public String getTeilnehmer(){
    return teilnehmer;
  }     
  public void setTeilnehmer(String teilnehmer) {   
      this.teilnehmer = teilnehmer; 
  }
 
  public String toString() {
      return "\nDer Termin ist am "+datum +", um " +zeit +", in " +ort+"\nTeilnehmer: " +teilnehmer+"\n";
  }
 
}

Menuepunkt
Code:
import java.util.Scanner;

public class Menuepunkt {
       
        //case1
    public void privat() {
        System.out.println("Geben sie den Tag ein: ");
          Scanner sc_ptag = new Scanner(System.in);
          int p_tag = sc_ptag.nextInt();
 
          System.out.println("Geben sie den Monat ein: ");
          Scanner sc_pmonat = new Scanner(System.in);
          int p_monat = sc_pmonat.nextInt();
     
          System.out.println("Geben sie das Jahr ein: ");
          Scanner sc_pjahr = new Scanner(System.in);
          int p_jahr = sc_pjahr.nextInt();
     
          System.out.println("Geben sie die volle Stunde ein: ");
        Scanner sc_pstunde = new Scanner(System.in);
          int p_stunde = sc_pstunde.nextInt();
     
          System.out.println("Geben sie die Minuten ein: ");
          Scanner sc_pminute = new Scanner(System.in);
          int p_minute = sc_pminute.nextInt();
     
          System.out.println("Geben sie den Ort ein: ");
          Scanner sc_port = new Scanner(System.in);
          String p_ort = sc_port.nextLine();
                     
          System.out.println("Grund für den Termin: ");
          Scanner sc_pbeschreibung = new Scanner(System.in);
          String p_beschreibung = sc_pbeschreibung.nextLine();
     
          PrivatTermin pt = new PrivatTermin(new Datum(p_tag,p_monat,p_jahr),new Zeit(p_stunde,p_minute), p_ort,p_beschreibung);
       
         System.out.println(pt);
    }
        //case2
    public void buero() {
        System.out.println("Geben sie den Tag ein: ");
          Scanner sc_btag = new Scanner(System.in);
          int b_tag = sc_btag.nextInt();
 
          System.out.println("Geben sie den Monat ein: ");
          Scanner sc_bmonat = new Scanner(System.in);
          int b_monat = sc_bmonat.nextInt();
     
          System.out.println("Geben sie das Jahr ein: ");
          Scanner sc_bjahr = new Scanner(System.in);
          int b_jahr = sc_bjahr.nextInt();
     
          System.out.println("Geben sie die volle Stunde ein ein: ");
        Scanner sc_bstunde = new Scanner(System.in);
          int b_stunde = sc_bstunde.nextInt();
     
          System.out.println("Geben sie die Minuten ein: ");
          Scanner sc_bminute = new Scanner(System.in);
          int b_minute = sc_bminute.nextInt();
     
          System.out.println("Geben sie den Ort ein: ");
          Scanner sc_bort = new Scanner(System.in);
          String b_ort = sc_bort.nextLine();
   
          System.out.println("Geben Sie den Teilnehmer an: ");
          Scanner sc_bteilnehmer = new Scanner(System.in);
          String b_teilnehmer = sc_bteilnehmer.nextLine();
     
          BueroTermin bt = new BueroTermin(new Datum(b_tag,b_monat,b_jahr),new Zeit(b_stunde,b_minute), b_ort,b_teilnehmer);
         
//      System.out.println(bt);       
    }
}

Main
Code:
import java.util.Scanner;


public class Testat_Kalender {
  public static void main (String[]args) {

    PasswortAbfrage p = new PasswortAbfrage();
    p.abfrage();
   
    while (true){
          Hauptmenue h = new Hauptmenue();
        int a = h.auswahl();
       
          switch (a) {
              case 0:        System.exit(0);
                    break;
              case 1:     Menuepunkt tp = new Menuepunkt(); //tp = termin privat
                          tp.privat();
                  break;
              case 2:        Menuepunkt tb = new Menuepunkt(); //tb = termin buero
                          tb.buero();
                    break;
            case 3:        Speicherung s = new Speicherung();
                        s.speichern();
                break;   
          }
      }
  }
}
und noch paar andere.

Aktuell gebe ich die eigegebenen Daten nur als Println aus, will Sie jetzt aber in ein Array speichern.

Meine Idee:
String [] PrivTerm = "pt"; und
String [] BuerTerm = "bt"
klappt nicht. Fehlermeldung ist immer: "... cannot be converted to String[]".

Ich kenne mich leider noch nicht so gut damit aus und bin mit meinen Latein auch am Ende. Kann mir von euch vllt jmd helfen?

Danke schon einmal für die Mühen.

Freundliche Grüße
Marco
 
Hmm zu dem Thema Arrays findet man eigentlich genug im Netz.
Java:
String[] strArray = new String[n] ;
// wobei n eine beliebige positive ganze Zahl ist
 
Da kommt doch genau der Fehler, den ich oben schon beschrieben habe. 😕
Ich möchte ja folgende Ausgaben in ein Array packen:
Code:
PrivatTermin pt = new PrivatTermin(new Datum(p_tag,p_monat,p_jahr),new Zeit(p_stunde,p_minute), p_ort,p_beschreibung);
BueroTermin bt = new BueroTermin(new Datum(b_tag,b_monat,b_jahr),new Zeit(b_stunde,b_minute), b_ort,b_teilnehmer);

Wenn ich da den Code hinschreibe den du oben gepostet hast und dann das "pt" dem strArray zuweise, kommt:

Code:
./Menuepunkt.java:37: error: incompatible types: PrivatTermin cannot be converted to String
 
incompatible types: PrivatTermin cannot be converted to String
Typ[] array = {new Typ(Wert a, Wert b)};
String[] stringArray = {"Wert A", "Wert B"};
...

Kartofel[] arrayK = {new Kartofel("Groß", 1.39), new Kartofel("Klein", 0.79)};
Birne[] arrayB = {new Kartofel{"Mittel", 1.09}}; /** Das geht aber nicht, sagt der Compiler */ 😉
 
pt ist ja auch kein String Array sondern ein PrivatTermin😕
Was genau soll denn in das Array?
Du könntest bspw die Attribute eines Termins (Beschreibung bspw) in ein String Array einfügen.
Java:
String arr[] = new String[5];
arr[0] = pt.getBeschreibung();

Was genau willst du denn erreichen?
 
Was genau willst du denn erreichen?

In das Array sollen alle Attribute des Termins(privat, buero).
z.B.: [0] 30.12.17, 14:00, Hof , Zahnarzt
[1] 31.12.17, 16:00, Hof, Hr. Mustermann

ich müsste quasi, wenn ich das gerade richtig verstehe, jedes Attribut mit pt.get...,pt.get..., usw. in das Array schreiben?

Ich muss die Termine ja später noch vergleichen. Ich darf allerdings keine Arraylist nehmen, ich soll selber einen Algorithmus schreiben der Sortiert und ein interface das dann vergleicht.
 
Zuletzt bearbeitet:
Lerne Grundlagen..

Ich bin dabei. Dafür das ich im Oktober erst angefangen habe mit Programmieren, bin ich schon ziemlich weit. (finde ich 😀) Aber ja ich habe noch einige Lücken, die ich mit der Zeit auffüllen werde, nur hilft mir diese Erkenntnis gerade nicht weiter, da ich das Programm bald fertig haben muss und aktuell nicht weiter komme.
 
Hallo zusammen,

nach langem hin und her, habe ich es endlich hinbekommen, das er meine erzeugten Termine in ein Array speichert. Allerdings wirft sich gleich die nächste Frage auf. Wie bekomme ich es denn hin, dass Termine, die nacheinander eingetragen werden, immer in ein anderes "Feld" des gleichen Arrays gespeichert werden? Aktuelle sieht es bei mir so aus:
Java:
PrivatTermin pt = new PrivatTermin(new Datum(p_Tag,p_Monat,p_Jahr),new Zeit(p_Stunde,p_Minute), p_Ort,p_Beschreibung);
        Termin [] terminArray = new Termin [10];
        terminArray[] = (pt);
        System.out.println(terminArray[0]);

Jetzt speichert er ja immer wieder in ein neues Array auf Feld 0, wenn ich das jetzt richtig verstanden habe.

Vg
Marco
 
Du musst dir eine Art "counter" mitlaufen lassen der speichert wie viele Termine du bereits im Array hast.
Dann kannst du anhand des counters bestimmen welcher Index der nächste sein muss.
 

Zurück
Oben