Konstruktor einer Methode

Guten Tag an alle,
Ich stehe gerade vor einem relativ großen Problem. Ich möchte gerade eine Klasse erstellen, die den Namen Laden trägt. In meinem ganzen Programm existiert dann genau ein Laden. In dieser Klasse möchte ich bis zu 200 verschiedene Gegenstände speichern, wohlmöglich als Array. Außerdem will ich bis zu 150 verschiedene Nutzeraccounts, wohlmöglich auch als Array, speichern. Mein Ansatz war, dass ich einen Konstruktor erstelle, welcher zwei Arrays der Länge 200 und 150 beinhaltet, damit die Gegenstände und Nutezraccounts darin gespeichert werden können.

Bin ich auf dem Holzweg oder würde das Prinzip dafür klappen? Wäre sehr froh über eine Rückmeldung :)
Java:
public class Laden {
    
    int gegenstandSumme [];
    int nutzeraccountSumme [];
    public Laden() {
        gegenstandSumme = new int[100];
        nutzeraccountSumme = new int[100];
    }
 
vor einem relativ großen Problem
Mehr relativ als groß :)
Mein Ansatz war, dass ich einen Konstruktor erstelle, welcher zwei Arrays der Länge 200 und 150 beinhaltet, damit die Gegenstände und Nutezraccounts darin gespeichert werden können.
Das wäre möglich. Für dynamische Listen verwendet man aber List-Objekte (außer, Du darfst/sollst diese nicht verwenden).

Unabhängig davon: in Deinem Code hast Du int-Arrays, Du willst aber Arrays von Nutzeraccount- und Gegenstand-Objekten.
 
Mehr relativ als groß :)

Das wäre möglich. Für dynamische Listen verwendet man aber List-Objekte (außer, Du darfst/sollst diese nicht verwenden).

Unabhängig davon: in Deinem Code hast Du int-Arrays, Du willst aber Arrays von Nutzeraccount- und Gegenstand-Objekten.
Da Nutzeraccount und Gegenstand eigene Klassen sind und ich hier die Objekte der Klassen verwenden will, muss ich dann statt dem int, den Klassennamen schreiben? Ich verstehe nicht wie ich die hier dann implementieren soll. Oh Gott, das Programmieren...
 
Da Nutzeraccount und Gegenstand eigene Klassen sind und ich hier die Objekte der Klassen verwenden will, muss ich dann statt dem int, den Klassennamen schreiben?
Ja. Du kannst natürlich Arrays für alle möglichen Typen erzeugen. Dies können einfache Typen wie int sein, aber auch komplexe Typen, wie Klassen.

Ich verstehe nicht wie ich die hier dann implementieren soll.
Du erstellst einfach eine Klasse in einer separaten Datei und verwendest diese, z.B.

Java:
public class User {
     private String name;

     public User(String name) {
          this.name = name;
     }

     public String getName() {
          return name;
     }
}
Verwendung:

Java:
public class Laden {
     private User[] users;

     public void addUser(User user) {
          // user dem Array hinzufügen
     }
}
 
Zuletzt bearbeitet:
Ja. Du kannst natürlich Arrays für alle möglichen Typen erzeugen. Dies können einfache Typen wie int sein, aber auch komplexe Typen, wie Klassen.



Du erstellst einfach eine Klasse in einer separaten Datei und verwendest diese, z.B.

Java:
public class User {
     private String name;

     public User(String name) {
          this.name = name;
     }

     public String getName() {
          return name;
     }
}
Verwendung:

Java:
public class Laden {
     private User[] users;

     public void addUser(User user) {
          // user dem Array hinzufügen
     }
}
Dann müsste ich eine if-Anweisung machen, oder?
Wenn der Array users kleiner gleich 100 ist, wird es hinzugefügt ansonsten nicht, oder?
 
Wenn der Array users kleiner gleich 100 ist, wird es hinzugefügt ansonsten nicht, oder?
Fast. Ein Array hat eine unveränderliche Größe (z. B. 100). Wenn Du Benutzer ins Array einfügst, musst Du selbst mitzählen, damit Du weißt, ob und welcher Platz frei noch frei ist. Beim Löschen musst Du Benutzer im Array verschieben etc.
 
Fast. Ein Array hat eine unveränderliche Größe (z. B. 100). Wenn Du Benutzer ins Array einfügst, musst Du selbst mitzählen, damit Du weißt, ob und welcher Platz frei noch frei ist. Beim Löschen musst Du Benutzer im Array verschieben etc.
Edit, ich habe es lösen können. :) . Habe es dann über eine if-Anweisung und 2 for-Schleifen gelöst.
 
Warum willst Du denn den Code privat schicken? Du kannst den einfach hier einstellen oder mit Worten beschreiben, wozu Du die beiden Schleifen verwendest.
 
So bin ich das Problem nun angegangen.

Java:
public class Laden {
   
    Account nutzeraccountSumme [];
    Artikel gegenstandSumme [];
   
   
   
   
   
    public void addAccount(Account account) {
        Account [] accountR;
        if(nutzeraccountSumme.length<100) {
            accountR=new Account[nutzeraccountSumme.length+1];
            for(int i=0; i<nutzeraccountSumme.length;i++) {
            accountR[i]=nutzeraccountSumme[i];
                for(int y=nutzeraccountSumme.length-1; y<accountR.length; y++ ) {
                    accountR[nutzeraccountSumme.length]=account;
                }
            }
        }
        else {
            accountR=new Account[nutzeraccountSumme.length];
        }
    }
 
Deine Methode ändert nur lokale Variablen. Genauso gut kannst Du schreiben:
Java:
public void addAccount(Account account) {
}
Mir ist auch nicht klar, was Du in der Methode eigentlich machen willst. Willst Du in eine Liste, die Platz für 100 Benutzer hat, einen weiteren Benutzer eintragen oder willst Du eine Liste haben, die "sich selbst" erweitert?
 
Deine Methode ändert nur lokale Variablen. Genauso gut kannst Du schreiben:
Java:
public void addAccount(Account account) {
}
Mir ist auch nicht klar, was Du in der Methode eigentlich machen willst. Willst Du in eine Liste, die Platz für 100 Benutzer hat, einen weiteren Benutzer eintragen oder willst Du eine Liste haben, die "sich selbst" erweitert?
Ich möchte den Account, der in der Methode übergeben wird hinzufügen zu meinem Laden. Aber wenn im Laden dann schon 100 Accounts drin sind, soll nichts passieren und es wird kein Account hinzugefügt. Und mit der Methode dachte ich, dass es damit dann geht.
 
Wie @mihe7 schon geschrieben hat. Die einfachste Lösung wäre es eine zusätzliche Instanzvariable zu haben, die mitzählt, wieviele Account sich bereits im Array befinden. Dann weißt du
  1. ob noch Platz frei ist
  2. an welcher Stelle der neue Account gespeichert werden muss.
 
Auf welche Weise soll man es dann nachträglich verändern, wenn es durch die Methode sowieso keinen Rückgabewert gibt?
Das verstehe ich nicht. Diese Methode braucht nicht zwingend einen Rückgabewert. Sie soll einfach nur den übergebenen Account im Array "nutzerAccountSumme" speichern. Der Name ist übrigens irgendwie schräg.
 
So sollte es dann passen, oder nicht?
Java:
    public void addAccount(Account account) {
        int n=100;
        if(nutzeraccountSumme.length<n) {
            nutzeraccountSumme[nutzeraccountSumme.length]=account;
        }
        else {
            //Nix passiert, da dann Array zu groß
        }
    }
 
So sollte es dann passen, oder nicht?
Java:
    public void addAccount(Account account) {
        int n=100;
        if(nutzeraccountSumme.length<n) {
            nutzeraccountSumme[nutzeraccountSumme.length]=account;
        }
        else {
            //Nix passiert, da dann Array zu groß
        }
    }
Nö. Ausprobiert?

An welcher Stelle im Array wird in deinem Code der neue Account gespeichert?

Edit: An welcher Stelle im Array müsste ein neuer Account gespeichert werden, wenn das Array leer ist?

Und an welcher Stelle der nächste hinzugefügte Account?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben