Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll

J

Juicerz

Mitglied
Hallo zusammen,

Ich habe eine kleine Frage.

Ich will eine Methode schreiben, die beliebig viele Objekte vom Typ Customer als Parameter entgegennehmen kann.
Jetzt kommts: Falls die Instanzvariable owners noch undefiniert ist, sollen die übergebenen Customer Objekte im Array owners gespeichert werden es es wird true zurückgegeben. Andernfalls wird owners nicht geändert und es soll false zurückgegeben werden.

Ich weiss jetzt nicht so richtig, ob das gut ist, was ich da gemacht habe, oder evtl. zu kompliziert. Bitte schaut es euch an. :)

Könnt ihr mir die Methode einfacher schreiben oder gar richtig? ^^ Danke!

Lg
 

Anhänge

  • Screenshot 2021-01-26 232825.jpg
    Screenshot 2021-01-26 232825.jpg
    51 KB · Aufrufe: 65
J

Juicerz

Mitglied
Java:
public class Account implements Comparable {
    
    private Customer[] owners;
    private String acctNumber;
    private double amount;
    
    private static int counter = 0;
    
    public Account(double amount) {
        this.amount = amount;
        DecimalFormat fmt = new DecimalFormat("00000");
        counter++;
        this.acctNumber = fmt.format(counter);
    }
    
    public boolean setOwner(Customer ... customers) {
        boolean full = false;
        
        for (int i = 0; i < owners.length; i++) {
            if (owners[i] != null) {
                full = true;
                return false;
            }
        }
        
        if (full == false) {
            for (int i = 0; i < owners.length; i++) {
                owners[i] = customers[i];
                return true;
            }
        }
        return full;
    }

    public int compareTo(Account other) {
        if (this.amount == other.amount) {
            return 0;
        } else if (this.amount > other.amount) {
            return 1;
        } else {
            return -1;
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
kneitzel

kneitzel

Top Contributor
Und ein paar Hinweise zum Code, damit paar Denkfehler deutlich werden:
Java:
        boolean full = false;
        
        for (int i = 0; i < owners.length; i++) {
            if (owners[i] != null) {
                full = true;
                return false;
            }
        }

a) wenn owners auf kein Array verweist (null ist), dann gibt es eine NPE.

b) Du prüfst, ob es in owners Einträge gibt. Da wäre mir wichtig, den Unterschied zwischen "owners gesetzt" und "owners gesetzt aber leer" wichtig.

Java:
        if (full == false) {
c) Diese Prüfung macht keinen Sinn, denn full kann ja nicht true sein, da Du ja in dem Fall schon aus der Methode heraus gegangen wärst.

Java:
            for (int i = 0; i < owners.length; i++) {
                owners[i] = customers[i];
                return true;
            }
Die Anzahl der übergebenen customer kann unterschiedlich sein zu der Array Größe von owners. Daher ist hier die Chance groß, dass nicht alle Elemente kopiert werden (owners kleiner als customers) oder eine IndexOutOfBoundsException geworfen wird (owners größer als customers).
 
J

Juicerz

Mitglied
Java:
    public boolean setOwner(Customer ... customers) {
      
            if (owners == null) {
                 owners = customers;
                 return true;
            } else {
            return fase;
           }   
}

Und wenn man jetzt noch gleichzeitig kontrollieren möchte, ob die Liste bereits Inhalt hat und dann an der nächsten freien Stelle alle customers absetzen möchte? Dann wirds kompliziert was und einer ArrayList wäre gescheiter, aber wie würde das aussehen?

Irgendwie so...

Java:
    public boolean setOwner(Customer ... customers) {
        for (int i = 0; owners.length; i++) {
            if (owners[i] == null) {
                for (int j = 0; customers.length; j++) {
                    owners[i] = customers[j];
                    return true;
                }
            }
            return false;
        }
    }
 
J

Juicerz

Mitglied
Die ganze Aufgabe ist schwachsinnig, kann ich mir vorstellen, aber mich nimmts grad wunder wie das machbar wäre... wie wärs so?

Java:
    public boolean setOwner(Customer ... customers) {
        if (owners.length == 0) {
            owners = customers;
            return true;
        } else {
            for (int i = 0; i < owners.length; i++) {
                if (owners[i] == null) {
                    owners = customers;
                }
            }
            return false;
        }
    }
 
mihe7

mihe7

Top Contributor
Und wenn man jetzt noch gleichzeitig kontrollieren möchte, ob die Liste bereits Inhalt hat und dann an der nächsten freien Stelle alle customers absetzen möchte? Dann wirds kompliziert was und einer ArrayList wäre gescheiter, aber wie würde das aussehen?
Das entspricht der addAll-Methode einer List. Kompliziert wird das nicht, aber ja, man nimmt dafür einfach eine List-Implementierung und muss das Rad nicht neu erfinden.

Wenn man das trotzdem tun möchte, könnte das schemenhaft etwa so aussehen:

Java:
public class Account {
    private Customer[] owners = new Customer[1];
    private int size; // Anzahl der in owners gespeicherten Customer-Objekte

    public void add(Customer owner) {
        int newSize = size + 1;
        enlargeCapacity(newSize);
        owners[size] = owner;
        size = newSize;
    }

    public void addOwners(Customer ... owners) {
        int newSize = size + owners.length;
        enlargeCapacity(newSize);
        System.arraycopy(owners, 0, this.owners, size, owners.length);
        size = newSize;
    }

    private void enlargeCapacity(int minSize) {
        if (minSize < owners.length) {
            return;
        }

        int capacity = owners.length;
        while (minSize > capacity) {
            capacity *= 2;
        }

        Customer[] newOwners = new Customer[capacity];
        System.arraycopy(owners, 0, newOwners, 0, size);
        owners = newOwners;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
V Problem Aufruf einer Methode in einer Methode Java Basics - Anfänger-Themen 1
P Problem mit dem Auslesen einer Varible/Methode Java Basics - Anfänger-Themen 8
F Problem bei eshop -> Ausführen einer Methode über eine Shopverwaltung Java Basics - Anfänger-Themen 6
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
O Methode in andere Klasse verlegt, "auslesen" einer HTML Seite verschnellert - Problem. Java Basics - Anfänger-Themen 4
B Problem bei dem erstellen einer Main Methode Java Basics - Anfänger-Themen 4
O Methode - Problem mit Subtraktion in einer while-Schleife Java Basics - Anfänger-Themen 2
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
D Problem bei einer Rekursiven Methode Java Basics - Anfänger-Themen 2
M Problem beim Aufruf einer Methode: Wo is der Fehler? Java Basics - Anfänger-Themen 12
B Problem mit einer static void Methode Java Basics - Anfänger-Themen 8
megachucky Kleines Problem mit dem "return" einer Methode. Java Basics - Anfänger-Themen 11
V Problem mit der Anzeige einer paint-Methode in einem Panel Java Basics - Anfänger-Themen 2
W Problem mit dem Aufruf einer Methode Java Basics - Anfänger-Themen 2
G Problem mit einer Methode Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
D Break Sprungmarken Problem einer While True in While True Java Basics - Anfänger-Themen 6
J String Problem kann das einer erklären Java Basics - Anfänger-Themen 13
J Erste Schritte Problem mit einer bool-Variable in einem Bot-Programm Java Basics - Anfänger-Themen 1
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
E Problem mit Arrays bei Benutzung einer GUI Java Basics - Anfänger-Themen 3
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
T Problem bei einer Flugbahnberechnung. Java Basics - Anfänger-Themen 8
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
Killerjo96 Erste Schritte Problem mit dem Sichern einer If Schleife Java Basics - Anfänger-Themen 5
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
M Problem bei einer Java-Aufgabe (Fakultäten) Java Basics - Anfänger-Themen 5
B Problem mit double in einer Funktion Java Basics - Anfänger-Themen 4
V Problem mit einer While Schleife Java Basics - Anfänger-Themen 8
C Problem mit Überprüfen einer Eingabe Java Basics - Anfänger-Themen 5
P Problem mit: Vererbung , ADT und einer Funktion Java Basics - Anfänger-Themen 10
F Problem mit einer Schleife Java Basics - Anfänger-Themen 10
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
calzone Problem einer Gleichung mit Modulo Java Basics - Anfänger-Themen 5
T problem mit einer typ zeile Java Basics - Anfänger-Themen 8
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
JeromeM90 Problem bei einer Ausgabe von einem bestimmten Zeichen Java Basics - Anfänger-Themen 5
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
X Problem: Erben von einer abstrakten Klasse Java Basics - Anfänger-Themen 4
T Problem mit Implementierung von einer HashMap aufgabe Java Basics - Anfänger-Themen 2
K Ausgabe problem in einer Hausaufgabe Java Basics - Anfänger-Themen 5
D Problem bei einer Formel (Bin Java Neuling) Java Basics - Anfänger-Themen 3
F Problem mit auführen einer .bat Datei aus Java heraus Java Basics - Anfänger-Themen 24
M Problem beim Löschen des ersten Eintrags einer TreeSet Java Basics - Anfänger-Themen 3
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
G problem beim überschreiben einer funktion Java Basics - Anfänger-Themen 2
A Problem mit Ausgabe einer Liste über einen Client Java Basics - Anfänger-Themen 5
T Problem beim Einlesen einer Datei Java Basics - Anfänger-Themen 3
T Problem mit einer Klasse Java Basics - Anfänger-Themen 3
S Problem beim löschen einer Zeile aus einer Tabelle Java Basics - Anfänger-Themen 4
W Problem mit jar erstellung bei einer SWT-Applikation Java Basics - Anfänger-Themen 5
L Merkwürdiges Problem beim Speichern und Öffnen einer Datei Java Basics - Anfänger-Themen 3
B Problem beim einlesen einer Textdatei Java Basics - Anfänger-Themen 3
G Problem bei der Angabe von Attributen in einer Objekt-Klasse Java Basics - Anfänger-Themen 3
G Problem beim erstellen einer .jar Datei Java Basics - Anfänger-Themen 9
L Aktual.problem einer Var. wenn ComboBox Element ausgewählt Java Basics - Anfänger-Themen 4
M Problem mit Exceptionausgabe in einer Logfile. Java Basics - Anfänger-Themen 3
G Problem (oder Verständnisporblem) bei einer static method Java Basics - Anfänger-Themen 9
G Problem mit einer ganz einfachen Funktion Java Basics - Anfänger-Themen 8
megachucky kleines problem mit einer nullpointer exception Java Basics - Anfänger-Themen 2
M Problem mit einer List Java Basics - Anfänger-Themen 5
K Problem beim Auslesen einer Datei Java Basics - Anfänger-Themen 6
T Problem mit einer Java Hausaufgabe Java Basics - Anfänger-Themen 14
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben