Methode an andere Methode übergeben

Hi,

ich sitze mittlerweile seid mehreren Stunden an meiner Aufgabe komme aber überhaupt nicht weiter.
Ich soll in einer Klasse mehrere Personen mit Name und Vorname aufnehmen.
In einer anderen Klasse soll ich mehrere Adressen mit Straße und Hausnummer aufnehmen speichern.

In einer dritten Klasse soll jede eingegebene Adresse als array gespeichert werden.
Außerdem soll geprüft werden, ob eine eingegeben Adresse bereits vorhanden ist oder nicht.

Die erste und zweite klasse habe ich hinbekommen.

Nur kriege ich die dritte Klasse nicht hin bzw. weiss nicht wie ich das machen soll.

Ich will die Ausgabe aus der zweiten Klasse an die dritte übergeben und speichern und dann vergleichen.
Ich habe nur keine Ahnung wie.

Hier ist das, was ich bis jetzt habe:

Die zweite Klasse ist genau so aufgebaut.

Ich weiss zum Beispiel nicht, wie ich die Ausgabe der zweiten Klasse an die dritte übergebe und speichere.

public class erste {
    
    private String name;
    private String vorname;
    
    
    public erste () {
      
    
            name="DEFAULT";
            vorname="DEFAULT";
            
    }
    
  public erste (String name, String vorname) {
        
        this.name = name;
        this.vorname = vorname;
   
        }
    
   public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setVorname(String vorname) 
    {
        this.vorname = vorname;
    }

    public String getVorname() 
    {
        return vorname;
    }

    
    public String Ausgabe () {
      Scanner wert = new Scanner (System.in);
      System.out.println("Wie viele Werte sollen eingegeben werden?");
      int anzahl = wert.nextInt();
      int [] array  = new int [anzahl];
              
     for (int i=0; i<array.length+1; i++)  {       
              
        Scanner input = new Scanner (System.in);
        System.out.println("Name eingeben");
        String temp = input.nextLine();
        Scanner input2 = new Scanner (System.in);
        System.out.println("Vorname eingeben");
        String temp1 = input2.nextLine();
     
        
        this.name = temp;
        this.vorname = temp1;
       
        
        System.out.println("Name: "+name+ " vorname "+vorname);
        
        i++;

        
     }
              return(name + vorname);
 

    }
    
}

Du machst ein Array über deine Klasse für die Adressen. in dieser Klasse bietest du eine Methode hinzufügen oder so an, und in der kontrollierst du bevor du die neue Adresse ans Ende packst, alle bisherigen Einträge, ob die gleich sind. (Dafür bietet es sich an, bei deiner Klasse für die adressen eine vergleichsmethode zu schreiben, die du dann einfach an der Stelle nutzen kannst)

Ich will die Ausgabe aus der zweiten Klasse an die dritte übergeben und speichern und dann vergleichen.

Dafür brauchst du dann ein Objekt deiner 2. Klasse, und darauf kannst du dann die Methoden aufrufen(z.B. getAdress())

Ich stehe zur zeit auf dem Schlauch. Ich weiß nicht wie ich das implementieren kann bzw soll

ein paar Grundregeln wären nicht schlecht,
Klassen schreibt man groß, Methoden schreibt man klein, nicht andersherum…

Scanner, String, und 78436 andere API-Klasse/-Methoden machen es genauso,
ist es nicht schlicht vom Anschauen des Vorhandenen der natürliche Anfang?


beschäftige dich zunächst nur mit einem Datensatz, Array & Co. werden noch schwierig genug, aber später,
zunächst:

wie man Methoden mit Parameter und Rückgabewert definiert, das musst du wissen, hast du zumindest auch schon im Code:

du kannst einen String an Methode setVorname() übergeben oder auch System.in an einen Scanner,
→ ist dir klar was das bewirkt?

  • genauso können Methoden Dinge zurückliefern, getVorname() liefert einen String, nextLine() von Scanner liefert einen String,
    → ist dir klar was das bewirkt?

  • schließlich gibt es noch den Zugriff auf Instanzattribute, schreiben und lesen

damit sind alle wesentlichen Möglichkeiten einer Programmsprache abgedeckt, nun nur noch ein System aufbauen,
wie mit Lego-Steinen eins nach dem anderen, du hast alle Zeit der Welt, wo hapert das Denkvermögen?

wenn du String-Variablen einzeln übergeben willst, kannst du das tun, aber schon bei Vorname + Name eher schlecht,
besser ist eine Klasse mit zwei Attributen, du hast auch schon eine, aber ob du sie zum Transport einsetzen willst ist nicht ganz klar,
du kannst auch eine Extraklasse ‚Person‘ oder ‚Personendaten‘ schreiben

ein Objekt X einer Klasse mit Vorname + Name muss jedenfalls irgendwie befüllt werden, Schritt 1,
dann kannst du dieses X an eine andere Klasse, eine andere Methode übergeben, Schritt 2,
ist das für sich schon schwer zu verstehen?
ich hoffe ein Aufruf, einmal mehr darüber nachzudenken bewirkt etwas


sobald du kein Problem mehr damit hast, Vorname + Name in der Welt zu verteilen,
geht es danach um eine Adresse,
später um viele Daten, Arrays oder Listen

edit: ich sehe erst nun, dass du mit Schleife und int-Array bereits beim Einlesen mit mehreren Datensätzen hantierst,
da passt mein Posting nicht mehr ganz,
bevor ich noch mehr brabble warte ich erstmal auf einen Kommentar,
gebe ich Zeit einmal mehr deine Gedanken zu sortieren, Pläne aufzustellen, mehr als nur ‚keine Ahnung‘ beizutragen, :wink:

Ich möchte in der dritten Klasse die Werte von der zweiten Klasse aufrufen und als array speichern.
Bei jedem neuen Datensatz von der zweiten Klasse soll ein neues array in der dritten klasse erstellt und mit den bereits vorhandenen verglichen werde.
Dies soll mit der equals Methode gemacht werden.
Oder anders gefragt.
Welche Thema beschäftigt sich mit meinem Problem bzw. kannst du mir sagen, wo ich etwas zu meinem Problem nachlesen kann um dies zu begreifen?

da gibt es keine speziellen Themen weil du im Grunde alle Bausteine vor dir liegen hast, du musst sie nur noch richtig zusammensetzen,
das hat dann teils nichts mehr mit Programmiersprache zu tun, vielleicht verwirrt dich das mehr als an der Sache wirklich dran ist

Kind A malt ein Bild, Lehrerin B holt das Bild von A ab und übergibt es Eltern C, einfache Gedanken

sicherlich gibt es andere Anfänger-/ Übungsaufgaben-Themen mit gleichen Inhalt, Tutorials gewiss auch, aber schwer konkret zu finden

wieso ein neues Array? das klingt erst einmal unwahrscheinlich, ein Array am Anfang erstellt sollte reichen, nach und nach befüllen

wie gesagt ist ein Datensatz idealerweise ein Objekt X irgendeiner Klasse, ein einzelnes Objekt X kann man leicht als Rückgabewert liefern, an andere Methoden übergeben usw.,
dafür braucht man keinen Flugzeugschein, einfach programmieren:


x = klasse1.stelleZusammen();
klasse2.hierMachWasDamit(x);


equals-Methode ist natürlich etwas mehr ein Thema wozu man nachlesen kann, Stichworte für Suche sollten klar sein, Suchmaschinen gibt es

Ist dieser Ansatz bis hier überhaupt richtig oder bin ich komplett auf dem falschen weg.
Ich weiss, ich mache es mir einfach zu kompliziert.

public class Adressespeichern {
    
    

     adresse [] adresse = new adresse [10]; 
    

  public Adressespeichern(String adresse, int hausnummer, String stadt, int plz){
      
      
          adresse neu = new adresse();

          String x = neu.getAusgabe();


  }

handwerkliche Fehler:
was soll adresse sein? einmal ein String, dann zweitends der Name des Arrays,
anscheinend auch noch drittens (!) ein Typ, also Klassenname, welcher ja wie gesagt groß geschrieben werden sollte,
besser keine Namen doppelt vergeben für den Anfang

Adressespeichern ist ein schlechter Name, nie Mehrzahl oder Handlungen für Klassennamen, evtl. Adressspeicher


inhaltlich ist gar nicht viel an Ansatz vorhanden zu bewerten, zwei Punkte aber:

  1. wenn eine Klasse ein Array für 10 Adressen hat, braucht sie nicht im Konstruktor mühsam mit einer Adresse herumhantieren,
    wann und wie sollen die anderen bis zu 9 kommen?
    im Konstruktor hier nur das Array anlegen, alles andere in eine einfügen()-Methode

  2. wie eigentlich schon lange gesagt wäre selbst String Vorname + Name nicht gut in zwei Strings zu handeln, 4 Adress-Variablen sind noch schlimmer,
    bevor du an Abspeichern denken kannst musst du erst eine Klasse Adresse haben, ein Datentyp (wie du ihn vielleicht auch schon für das Array andenkst? wie auch in Zeile 12?)

beim Einlesen irgendwo 4 Lesevorgänge, einzelne Variablen, ja , die kommen dort dann aber in das Adresse-Objekt
und dieses wird einzeln in anderen Klassen herumgereicht, ein Datensatz ist Objekt X (wie oft noch? :wink: )

vielleicht hast du das in Zeile 12 vor, gehört aber ganz klar besser dahin wo die Daten gelesen werden, dann nicht alles umständlich zu übergeben!