Hilfe bei Java-Projekt

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Hilfe bei Java-Projekt

      Hi. Ich lerne gerade mein erstes Semester Java und habe die Aufgabe ein Adressbuch zu schreiben dass bis jetzt aus 4 Klassen und einigen ArrayLists besteht die die entsprechenden Daten enthalten.
      Mein Problem liegt darin, dass ich leider absolut keinen Plan habe wie ich nun einzele Daten aus den ALs ausgeben lassen kann.

      Die Klasse Adressbuch enthält die ArrayList einträge welche die Daten von der Klasse Eintrag bekommt. Diese enthält unteranderem die Variable firma welche ich gerne mit einer Methode in der Klasse Adressbuch ausgeben würde ...

      for(i = 0; i < einträge.size(); i++) {

      steht schon da .. aber wie gehts jetzt weiter?

      Danke für die Hilfe im vorraus
      Ist nicht so schlimm wie´s aussieht
    • vllt verstehe ich deine frage falsch, aber ausgabe in java ist normalerweise

      Quellcode

      1. System.out.print
      oder alternativ (dann macht er einen absatz)

      Quellcode

      1. System.out.println


      hatte aber auch erst ein paar vorlesungen und hab noch nicht viel gepaukt :P
    • Objektorientiertes programmieren?!

      Heinrich von Kleist schrieb:

      [...] [D]u hast an mir getan, [...] was in Kräften [...] eines Menschen stand, um mich zu retten: Die Wahrheit ist, daß mich auf Erden nicht zu helfen war.
    • ja das ist schon klar. sieht bis jetzt so aus .. problem ist halt nur. wie bekomme ich einzelne variablen aus den arraylists wieder raus.

      Quellcode

      1. public void adressbuchAnzeigen() {
      2. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      3. System.out.println("| |");
      4. System.out.println("| _ _ _ |");
      5. System.out.println("| /\\ | | | | | | |");
      6. System.out.println("| / \\ __| |_ __ ___ ___ ___| |__ _ _ ___| |__ |");
      7. System.out.println("| / /\\ \\ / _` | '__/ _ \\/ __/ __| '_ \\| | | |/ __| '_ \\ |");
      8. System.out.println("| / ____ \\ (_| | | | __/\\__ \\__ \\ |_) | |_| | (__| | | | |");
      9. System.out.println("| /_/ \\_\\__,_|_| \\___||___/___/_.__/ \\__,_|\\___|_| |_| |");
      10. System.out.println("| v.1.0 |");
      11. System.out.println("| |");
      12. System.out.println("| von Marc und Robert |");
      13. System.out.println("| |");
      14. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      15. for(i = 0; i < einträge.size(); i++) {
      16. System.out.println("| " + i + " |______________________________________________________________________________________________________________________________________________|");
      17. System.out.println("|_____|______________________________________________________________________________________________________________________________________________|");
      18. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      19. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      20. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      21. System.out.println("|____________________________________________________________________________________________________________________________________________________|");
      22. }
      23. }
      Alles anzeigen
      Ist nicht so schlimm wie´s aussieht
    • Was ich mit der Frage meinte: Wieso überhaupt eine ArrayList?
      Erstell doch eine Klasse Personen in der alle Attribute gespeichert sind und erstelle Klassenfunktionen, die für dieses(this) Objekt deine gewünschten Werte ausgeben. ABer Hauptsache ASCII Grafik :thumbup: Habe ich auch im ersten Semester gemacht, irgendwann konzentriert man sich dann aber auch auf die Aufgabe :thumbup:

      Heinrich von Kleist schrieb:

      [...] [D]u hast an mir getan, [...] was in Kräften [...] eines Menschen stand, um mich zu retten: Die Wahrheit ist, daß mich auf Erden nicht zu helfen war.
    • Ja musste :D

      Ne die Aufgabe beinhalten 4 Klassen und 3 ArrayLists. Damit das ganze entsprechend strukturiert ist.

      Ich habe die Klassen Adressbuch,Eintrag,Kontakt und Adresse.
      Im Adressbuch gibts die ArrayList einträge und diese haben dann wiederrum Adressen und Kontakte.

      Quellcode

      1. public class Adressbuch
      2. {
      3. //Instanzvariablen
      4. private int i;
      5. private ArrayList<Eintrag> einträge;
      6. //Konstruktor - Erstellt hier nur die übergeordnete ArrayList
      7. public Adressbuch() {
      8. int i = 0;
      9. einträge = new ArrayList<Eintrag>();
      10. }
      11. //Methode zum Anlegen von Einträgen in der ArrayList
      12. public void eintrag(String anrede, String name, String vorname, String firma, String namenszusätze) {
      13. einträge.add(new Eintrag(anrede, name, vorname, firma, namenszusätze));
      14. }
      15. //Methode um Kontakte hinzuzufügen
      16. public void kontaktHinzufügen(String artDesKontaktes, String kontakt, int indexEintrag) {
      17. Eintrag temp = einträge.get(indexEintrag);
      18. temp.kontaktHinzufügen(artDesKontaktes, kontakt);
      19. }
      20. //Methode um Adressen hinzuzufügen
      21. public void adresseHinzufügen(String straße, String ort, String land, String verwendung, String postfach, int plz, int indexEintrag) {
      22. Eintrag temp = einträge.get(indexEintrag);
      23. temp.adresseHinzufügen(straße, ort, land, verwendung, plz, postfach);
      24. }
      Alles anzeigen


      Quellcode

      1. public class Eintrag
      2. {
      3. //Instanzvariablen
      4. // - ArrayListen
      5. private ArrayList<Adresse> adressen;
      6. private ArrayList<Kontakt> kontakte;
      7. private ArrayList<String> gruppen;
      8. // - Eintraginhalte
      9. private String anrede;
      10. private String name;
      11. private String vorname;
      12. private String firma;
      13. private String namenszusätze;
      14. //Konstruktor mit allen Grundinformationen eines Eintrages und den enthaltenen ArrayListen
      15. public Eintrag(String anrede, String name, String vorname, String firma, String namenszusätze) {
      16. this.anrede = anrede;
      17. this.name = name;
      18. this.vorname = vorname;
      19. this.firma = firma;
      20. this.namenszusätze = namenszusätze;
      21. kontakte = new ArrayList<Kontakt>();
      22. adressen = new ArrayList<Adresse>();
      23. }
      24. //Methode um Kontakte hinzuzufügen
      25. public void kontaktHinzufügen(String artDesKontaktes, String kontakt) {
      26. kontakte.add(new Kontakt(artDesKontaktes, kontakt));
      27. }
      28. //Methode um Adressen hinzuzufügen
      29. public void adresseHinzufügen(String straße, String ort, String land, String verwendung,int plz, String postfach) {
      30. if(straße != null) {
      31. adressen.add(new Adresse(straße, ort, land, verwendung, plz));
      32. } else {
      33. adressen.add(new Adresse(postfach, ort, land, verwendung, plz));
      34. }
      35. }
      36. }
      Alles anzeigen


      Quellcode

      1. public class Adresse
      2. {
      3. //Instanzvariablen
      4. private String straße;
      5. private String ort;
      6. private String land;
      7. private String verwendung;
      8. private int plz;
      9. private String postfach;
      10. //Konstruktor zum erstellen einer Postanschrift
      11. public Adresse (String straße,String ort, String land, String verwendung, int plz) {
      12. this.straße = straße;
      13. this.ort = ort;
      14. this.land = land;
      15. this.verwendung = verwendung;
      16. this.plz = plz;
      17. }
      18. //Konstruktor zum erstellen einer Postfachanschrift
      19. public Adresse (String ort, String land, String verwendung, int plz, String postfach) {
      20. this.postfach = postfach;
      21. this.ort = ort;
      22. this.land = land;
      23. this.verwendung = verwendung;
      24. this.plz = plz;
      25. }
      26. }
      Alles anzeigen


      Quellcode

      1. public class Kontakt
      2. {
      3. //Instanzvariablen
      4. private String artDesKontaktes;
      5. private String kontakt;
      6. // Konstruktor zum Erstellen eines Kontaktes
      7. public Kontakt (String artDesKontaktes, String kontakt) {
      8. this.artDesKontaktes = artDesKontaktes;
      9. this.kontakt = kontakt;
      10. }
      11. }
      Alles anzeigen
      Ist nicht so schlimm wie´s aussieht
    • Aufgabe : (habe Adressat in Einträge geändert)

      Implementieren Sie ein Adressbuch!
      Die Klasse Adressbuch verwaltet eine Sammlung von Adressat-Objekten. Die Klasse Adressat enthält die grundlegenden Daten, die zu einem Adressaten gehören:
      Anrede, Name, Vorname, ggf. Firma, Namenszusätze,
      Jeder Adressat kann mehrere Adressen und Kontakte jeweils in einer eigenen Sammlung verwalten.
      Die Klasse Adresse verwaltet die Adressdaten:
      Bei Postanschriften: Straße, PLZ, Ort, Land, Verwendung (s.u.)
      Bei Postfachanschriften: Postfach mit PLZ, Ort, Land, Verwendung (s.u.)
      Mit Verwendung ist gemeint: Arbeit, Privat, …
      Die Klasse Kontakt verwaltet die folgenden Daten:
      Art des Kontaktes (Telefon, Mobil, E-Mail, Fax, …)
      Kontakt (Telf.nr. bzw. E-Mail-Adresse, …)
      Verwendung (Arbeit, Privat, …)
      Ein Adressat kann außerdem mehreren Gruppen zugeordnet werden, die ebenfalls in einer eigenen Sammlung verwaltet werden.
      Die folgenden Funktionalitäten sollen realisiert werden:
      Erfassen und Anlegen eines neuen Adressaten, einer Adresse bzw. eines Kontaktes zu einem Adressaten.
      Ausgabe aller Adressaten in einer hierarchischen Liste (Für jeden Adressaten eine Liste der Adressen sowie eine Liste der Kontakte, fortlaufende Nummern für Adressat und Adresse bzw. Kontakt vorangestellt)
      Ausgabe aller Adressdaten in Blöcken („formatierte“ Adressen wie auf einem Brief, Liste der Kontakte)
      Löschen eines Adressaten (mit allen Adressen und Kontakten), einzelner Adressen und Kontakte
      Ist nicht so schlimm wie´s aussieht
    • Ich glaube du meinst einträge.get(i)?
      Nutze selber eigentlich zu selten ArrayList, aber daran könnts liegen.
      Ausgeben dann einfach

      Quellcode

      1. System.out.print(einträge.get(i));

      natürlich in einer Schleife

      Heinrich von Kleist schrieb:

      [...] [D]u hast an mir getan, [...] was in Kräften [...] eines Menschen stand, um mich zu retten: Die Wahrheit ist, daß mich auf Erden nicht zu helfen war.
    • Ok dein erstes Problem ist mal dass du auf die Werte der einzelnen Klassen nicht zugreifen kannst.
      Daher entweder public get Methoden für die einzelnen Variablen machen. Oder Methoden bauen welche ein einzelnes Objekt ausgeben. bzw die ToString Methoden überschreiben je nach dem wie variable du die sachen ausgeben musst

      Quellcode

      1. public class Addressbuch
      2. {
      3. public ArrayList<Eintrag> getEintraege() {
      4. return this.einträge;
      5. }
      6. }
      7. //Ausgabe
      8. Addressbuch a = ...
      9. .
      10. .
      11. for(i = 0; i < a.getEintraege.size(); i++) {
      12. //Entweder
      13. a.get(i).print()
      14. //oder
      15. Eintrag e = a.get(i);
      16. System.out.println(e.getAnrede() + e.getName() + e.getVorname() ... );
      17. }
      Alles anzeigen
    • Quellcode

      1. System.out.print((einträge.get(i)).toString())
      ?

      Heinrich von Kleist schrieb:

      [...] [D]u hast an mir getan, [...] was in Kräften [...] eines Menschen stand, um mich zu retten: Die Wahrheit ist, daß mich auf Erden nicht zu helfen war.
    • so ganz hab ichs immernoch nicht :/
      ja müssen wir .. leider. finde ich auch nicht.

      der will mir nicht die richtigen sachen ausgeben .. irgendwie. wie mach ich n das mit dem toString? ?(

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von makii ()

      Ist nicht so schlimm wie´s aussieht
    • Java ist ne Weile her, daher hoffe ich ich erzähle keinen Mist :D

      Klasse Adresse:

      Wofür ist i? (Kommentieren Junge :P) Kann mMn weg.

      Variable "temp" besser bezeichnen (in diesem Fall "eintrag" oder so). Bei so ner kleinen Methode kein Problem, bei größeren schon. Direkt richtig angewöhnen.

      Klasse Eintrag

      Quellcode

      1. public void adresseHinzufügen(String straße, String ort, String land, String verwendung,int plz, String postfach) {
      2. if(straße != null) {
      3. adressen.add(new Adresse(straße, ort, land, verwendung, plz));
      4. } else {
      5. adressen.add(new Adresse(postfach, ort, land, verwendung, plz));
      6. }
      7. }


      Ich bin mir grad nicht sicher, aber man muss dann explizit "null" übergeben für die Straße oder? Einfach leer lassen geht nicht? Ist für den Benutzer mMn nicht hinnehmbar. Kannst du nicht davon ausgehen, dass er das kann. Und intern benutzt du dann 2 Konstruktoren, anstatt einfach null zu übergeben?
      Außerdem würde ich sagen, auch wenns eigentlich wenig Sinn macht, kommt in der Praxis wieder irgendein Vollhorst auf die Idee und will eine Postfachadresse mit Straße anlegen. Daher ist die Unterscheidung anhand der Straße nicht so gut. Solltest dir vll überlegen ob du es anhand eines Flags machen kannst (Für die Aufgabe kannst du es aber auch so lassen.).

      Und der Bonuspunkt: Wenn du einen Eintrag anlegst, wirst du dann in den meisten Fällen nicht auch direkt eine Adresse anlegen wollen? Also wäre eine Methode die beides macht sinnvoll.

      So und nu zu deinem Problem:

      In der Klasse Adresse und Kontakte fehlen Ausgabemethoden.

      Quellcode

      1. public void printAdresse() {
      2. If(Straße == null) { // equals und nicht == ???
      3. // Ausgabe Postfachanschrift
      4. System.out.println(anrede + vorname + name)
      5. ...
      6. }
      7. else {
      8. // Ausgabe Postanschrift
      9. }
      10. }


      und dann halt einfach Adresse aus der Liste holen und die Methode aufrufen. Ist dasselbe wie mit .toString() nur das die Methode halt printAdresse heißt.

      Beitrag von makii ()

      Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
    • Problem ist. Ich kann jetzt zwar mit toString einträge ausgeben. aber immer noch keine kontakte oder adressen. da muss ich ja über einträge auf die anderen listen zugreifen .. wie geht das bitte? :D

      und das formatieren check ich auch nicht. FUCK. vllt hätte ich damit nicht 1 tag vorher anfangen sollen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von makii ()

      Ist nicht so schlimm wie´s aussieht
    • Sweeper schrieb:

      Klasse Adresse:

      Sweeper schrieb:

      Wofür ist i? (Kommentieren Junge ) Kann mMn weg.

      Jop. Du instanzierst i mit 0 benutzt es aber nirgends.

      Sweeper schrieb:

      Variable "temp" besser bezeichnen (in diesem Fall "eintrag" oder so). Bei so ner kleinen Methode kein Problem, bei größeren schon. Direkt richtig angewöhnen.

      Mal davon abgesehen, dass er die Variable gar nicht anlegen muss, ist temp schon i.O. Ich glaube eher, dass deine Methode "kontaktHinzufügen" nicht macht was sie soll. Du legst eine neue Variable "temp" im Speicher an und diese erhält den Wert des i-ten Eintrags. Der temp Variablen fügst du dann einen Kontakt hinzu. Nicht aber deinem eigentlichen Eintrag im Adressbuch.

      Sweeper schrieb:

      Ich bin mir grad nicht sicher, aber man muss dann explizit "null" übergeben für die Straße oder? Einfach leer lassen geht nicht? Ist für den Benutzer mMn nicht hinnehmbar. Kannst du nicht davon ausgehen, dass er das kann. Und intern benutzt du dann 2 Konstruktoren, anstatt einfach null zu übergeben?
      Außerdem würde ich sagen, auch wenns eigentlich wenig Sinn macht, kommt in der Praxis wieder irgendein Vollhorst auf die Idee und will eine Postfachadresse mit Straße anlegen. Daher ist die Unterscheidung anhand der Straße nicht so gut. Solltest dir vll überlegen ob du es anhand eines Flags machen kannst (Für die Aufgabe kannst du es aber auch so lassen.).

      Ein Benutzer operiert wohl kaum auf den Methoden. Diese sind lediglich intern für den Programmierer gedacht.

      Sweeper schrieb:

      public void printAdresse() {
      If(Straße == null) { // equals und nicht == ???
      // Ausgabe Postfachanschrift
      System.out.println(anrede + vorname + name)
      ...
      }
      else {
      // Ausgabe Postanschrift
      }
      }

      == ist hier völlig richtig. Ich weis nicht wo da ein Problem sein sollte.
      == überprüft ob zwei Objekte die gleiche Referenz im Speicher besitzen. Also ob es sich um ein und dasselbe Objekt handelt.
      equals überprüft ob zwei Objekte in ihren Werten übereinstimmen.
      Wenn ich z.B. zwei Strings anlege, die aber den selben Wert enthalten liefert == false und equals true.

      Sweeper schrieb:

      und dann halt einfach Adresse aus der Liste holen und die Methode aufrufen. Ist dasselbe wie mit .toString() nur das die Methode halt printAdresse heißt.

      Tut mir leid, aber das ist nicht dasselbe und man sollte auf jeden Fall eine toString()-Methode deiner printMethode vorziehen, da toString()-Methoden auch intern benutzt werden, wenn man z.B. System.out.println() aufruft.

      Bei Fehlern kann man mich gerne korrigieren.
    • okay. habe die einträge jetzt auch mit der toString methode gemacht und da kommt zumindest dass was auch eingegeben wurde. was ich nur wie gesagt nicht geschissen bekomme ist das ganze vernünftig zu formatieren und vorallem auch auf die anderen listen zuzugreifen.
      die ganzen eingabe methoden scheinen übrigens zu funktionieren.
      Ist nicht so schlimm wie´s aussieht
    • Wo ist das Problem bei der Formatierung??

      Die toString()-Methode für einen Eintrag erstellt einfach einen String in dem alle Informationen über den einen Eintrag drin stehen. Name etc. kannst du direkt reinschreiben. Um an Adressen, Kontakte, Gruppen zu kommen musst du über die entsprechende ArrayList interieren und die dortigen toString()-Methoden nutzen.