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

    • Pro]phet schrieb:

      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.

      Bei ner längeren Methode weiss halt kein Schwein mehr was "temp" ist, bzw. muss erst nachschauen, daher sollte man variablen schon so benennen, dass man weiss worum es sich handelt. Macht den Code einfach deutlich verständlicher.

      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.

      Wie soll der Benutzer sonst das Programm bedienen? Das ist ein Consolen-Programm und natürlich wird der Benutzer die Methoden (der Adressbuch Klasse) direkt aufrufen müssen.

      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.

      Ich war mir nicht sicher ob bei null == funktioniert oder ob man da schon equals benutzen muss. Wie gesagt, Java ist ne Weile her.

      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.


      Naja ich sehe schon einen Unterschied zwischen einer toString()-Methode und einer Ausgabe an den Benutzer. Zumal er ja verschiedene Ausgabeformen braucht und daher dann am Besten auch mehrere Ausgabemethoden.

      ----------

      Ich versteh jetzt auch nicht so ganz wo das Problem noch ist:

      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)


      Quellcode

      1. (Pseudo Code, keine Lust jetzt auf vollständige formatierung zu achten)
      2. Methode in Adressbuch:
      3. getAdressesHierachy()
      4. for(int i = 0; i < einträge.size(); ++i) {
      5. einträge.get(i).getAdressesHierarchy()
      6. }
      7. Methode in Eintrag:
      8. getAdressesHierarchy()
      9. for(int i = 0; i < adressen.size(); ++i) {
      10. adressen.get(i).toString()
      11. }
      12. for(int i = 0; i < kontakte.size(); ++i) {
      13. kontakte.get(i).toString()
      14. }
      15. }
      16. (Zähler für die fortl. Nummern fehlt dabei noch, einfach int variablen die du dann in den Schleifen hochzählst.)
      Alles anzeigen


      Ausgabe aller Adressdaten in Blöcken („formatierte“ Adressen wie auf einem Brief, Liste der Kontakte)


      ähnlich, aber mit ner anderen Ausgabe methode bei den Adressen.

      Hoffe da ist jetzt kein Fehler drin. :)
    • jetzt habe ich das problem dass index und i teilweise nicht übereinstimmen. die fangen ja je eintrag wieder bei 0 an. wie behebt man denn sowas bitteschön ._.

      aber riesen dank schonmal
      Ist nicht so schlimm wie´s aussieht