Methoden Objektarray(erfassen)

Bitte aktiviere JavaScript!
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
 
A

Anzeige




Schau mal hier —> (hier klicken)
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;    
}
 
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?
 
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...
}
 
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.
 
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
  // ...
}
 
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;
        }
    }
}
 
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.
 
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");
}
 
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;
    }
}
 
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:
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 eine for-Schleife? Alle Hunde haben dann den selben Namen und Besitzer.
Soll ich dann einfach die Schleife rausmachen oder hast du eine andere Idee?
 
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.
 
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);
         }
    }
}
 
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;
}
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben