Methoden Objektarray(erfassen)

Semikolon123

Mitglied
Hi,
wie kann man ein Objektarray mit seinen Eingaben füllenIch habe bereits versucht was dazu zu finden, allerdings finde ich nur Erklärungen bei denen die Wert für das Array schon initialisiert wurden und nicht selber eingeben werden.
LG
 

Robat

Top Contributor
Die Frage ist recht unspezifisch. Generell zB mit einem Array und einer for-Schleife. Sollte das nicht das passende sein, musst du deine Frage noch mal konkretisieren.
Java:
String[] data = new String[5];
for(int i = 0; i < data.length; i++) {
    String input = getSomeInput();
     data[i] = input;    
}
 

Semikolon123

Mitglied
Die Frage ist recht unspezifisch. Generell zB mit einem Array und einer for-Schleife. Sollte das nicht das passende sein, musst du deine Frage noch mal konkretisieren.
Java:
String[] data = new String[5];
for(int i = 0; i < data.length; i++) {
    String input = getSomeInput();
     data[i] = input;   
}
Als konkreten Fall hätte ich jetzt sowas: Du hast eine Hundepension und kannst 5 Hunde aufnehmen. Jeder Hund hat einen Namen und einen Besitzer. Könnte man daraus ein Objektarray machen?
 

httpdigest

Top Contributor
Hier kommen wir zum Thema Object-Oriented Design: Modelliere deinen Hund, deinen Menschen (als Besitzer) und die Hundepension als Klassen, z.B. so:
Java:
import java.util.*;
class Mensch {
  // relevante Eigenschaften eines Menschen
  // ...
}
class Hund {
  Mensch besitzer;
  // weitere relevante Eigenschaften
  // eines Hundes
  // ...
}
class Hundepension {
  List<Hund> hunde = new ArrayList<>();

  // Weitere Eigenschaften und Methoden
  // einer Hundepension. Z.B. zum Hinzufügen
  // oder Entfernen eines Hundes...
}
 

Semikolon123

Mitglied
Hier kommen wir zum Thema Object-Oriented Design: Modelliere deinen Hund, deinen Menschen (als Besitzer) und die Hundepension als Klassen, z.B. so:
Java:
import java.util.*;
class Mensch {
  // relevante Eigenschaften eines Menschen
  // ...
}
class Hund {
  Mensch besitzer;
  // weitere relevante Eigenschaften
  // eines Hundes
  // ...
}
class Hundepension {
  List<Hund> hunde = new ArrayList<>();

  // Weitere Eigenschaften und Methoden
  // einer Hundepension. Z.B. zum Hinzufügen
  // oder Entfernen eines Hundes...
}
Ich hatte eher an was einfacheres gedacht wie : Hundeobjekt("Besitzer","Hundename");
Und das sollte man z.B 5 mal erfassen.
 

Javinner

Top Contributor
Ich hatte eher an was einfacheres gedacht wie : Hundeobjekt("Besitzer","Hundename");
Was, wenn jeder Hund eine Marke haben soll, auf welcher die Adresse des Herrchen steht? So wie @httpdigest es dir vorgemacht hat, lässt sich die Adresse des Menschen auf das Hund übertragen, ergo diese existiert nur einmal im Code. Zudem kann dann der Hund, falls sein alter Herr abdankt, die Adresse des Tierheimes einfach übernehmen.

Java:
class Hund {
    Mensch besitzer;
    Adresse adresse;
  // weitere relevante Eigenschaften
  // eines Hundes
  // ...
}
 

Semikolon123

Mitglied
Das ist das was ich hinbekommen hab, aber das funktioniert nicht wirklich.
Java:
public class bsp
{ 
    private String name;
    private String besitzer;
    private bsp[] tierobjekt;
    public bsp()
    {
        
        tierobjekt[5].setTier(name,besitzer);
        
    }

    public void setTier(String name, String besitzer)
    {
        for(int i=0;i<5;i++){
            this.name=name;
            this.besitzer=besitzer;
        }
    }
}
 

Javinner

Top Contributor
Java-Konventionen beachten
private bsp[] tierobjekt;
Gehört nicht in die Klasse, siehe #6
public bsp()
{
tierobjekt[5].setTier(name,besitzer);
}
dein Array ist nicht initialisiert, somit null.
Zudem zeugt es von fehlenden Grundlagen.
public void setTier(String name, String besitzer)
{
this.name = name;
this.besitzer = besitzer;
}
Besser wäre es, wenn du bei der Initialisierung die Werte an den Konstruktor übergibst.
 

member42

Aktives Mitglied
So könntest du es z.B machen, wahrscheilich wäre es besser statt nem Array eine Liste zu verwenden:

Java:
class Hund {

    private String name;
    private String besitzer;

    public Hund(String name, String besitzer) {
        this.name = name;
        this.besitzer = besitzer;
    }
}

public static void main(String[] args) {
    Hund hundePension[] = new Hund[5];
    hundePension[0] = new Hund("name", "besitzer");
}
 

Semikolon123

Mitglied
So könntest du es z.B machen, wahrscheilich wäre es besser statt nem Array eine Liste zu verwenden:

Java:
class Hund {

    private String name;
    private String besitzer;

    public Hund(String name, String besitzer) {
        this.name = name;
        this.besitzer = besitzer;
    }
}

public static void main(String[] args) {
    Hund hundePension[] = new Hund[5];
    hundePension[0] = new Hund("name", "besitzer");
}
Habs so versucht, wie ist das?
Java:
public class pension
{ 

    private hund hundeobjekt[];
    public pension(){
        hundeobjekt= new hund[2];
    }

    public void erfasseKunde(String name,String besitzer)
    {
        for(int i=0;i<2;i++){
            hundeobjekt[i]=new hund(name,besitzer);
     
        }
    }
}


public class hund
{
    public String name;
    public String besitzer;

    public hund(String besitzer, String name){
       this.name=name;   
       this.besitzer=besitzer;
    }
}
 

member42

Aktives Mitglied
Ist denke ich soweit in Ordnung. Nur wie schon gesagt wurde Klassennamen großschreiben. Die Größe der Hundepension könnte man auch im Konstruktor mitgeben.
Edit: bei erfasseKunde() warum verwendest du da eine for-Schleife? Alle Hunde haben dann den selben Namen und Besitzer. Die Methode sollte nur einen Hund zu Zeit hinzufügen.
 
Zuletzt bearbeitet:

member42

Aktives Mitglied
Mir würde nur sowas einfallen:

Java:
public void erfasseKunde(int index, String name, String besitzer) {
      hundeobjekt[index] = new hund(name, besitzer
}

Oder eine Liste verwenden, dann könnte es einfach hinten drangehangen werden und du hättest das Problem nicht.
 

Robat

Top Contributor
Wenn du es unbedingt mit einem Array machen willst musst du dir eben abspeichern bei welchem Index du gerade bist:
Java:
public class Pension
{
    private Hund[] hunde;
    private int position;

    public Pension(int size) {
        this.hunde= new hund[size];
        this.position = 0;
    }

    public void erfasseKunde(String name,String besitzer) {
        if(position < hunde.length) {
            hunde[position++] = new Hund(name, besitzer);
        }
    }

    public static void main(String[] args) {
         int size = 2;
         Pension pension = new Pension(size);
         for(int i = 0; i < size; i++) {
              String name = ....;
              String besitzer = ....;
              pension.erfasseHund(name, besitzer);
         }
    }
}
 

Semikolon123

Mitglied
Mir würde nur sowas einfallen:

Java:
public void erfasseKunde(int index, String name, String besitzer) {
      hundeobjekt[index] = new hund(name, besitzer
}

Oder eine Liste verwenden, dann könnte es einfach hinten drangehangen werden und du hättest das Problem nicht.
Oder so?
Java:
public void erfasseKunde(String name, String besitzer) {
      hundeobjekt[anzahlhunde] = new hund(name, besitzer);
   anzahlhunde=anzahlhunde+1;
}
 

Ähnliche Java Themen

Neue Themen


Oben