arraygröße durch variablen Konstruktor?

krys001

Mitglied
Moinmoin^^
hoffe ihr könnt mir wieder helfen, ich bin bischen am verzweifeln.
Folgendes, ich hab ein Objekt namens Artikel, dann hab ich noch ein Objekt Rechnungsposition.
Jetzt möchte ich ein Objekt Rechnung das mindestens eines aber höchstens 20 Rechnungspositionen hatt/kennt.
Das problem ist das ich unterschiedlich viele Artikel übergeben möchte und die Rechnung beinhaltet dann artikel und was dazugehört, und Rechnungsposition die die menge hinzufügt. Außerdem berechnet die Rechnung auch den Gesamtpreis für alle Artikel.
Aber jetzt 20 Konstruktoren zu schreiben ist ja auch keine schöne lösung, aber ich weiß nicht wie ich sonst darauf eingehen könnte, wieviele Artikel man beim aufruf der rechnung übergibt.

Hier mein Code:

Artikel:
Java:
public class Artikel {
    private double preis;
    private int id;
    private String name;
   
    public Artikel (double price, int id, String name){
        setPrice(price);
        setId(id);
        setName(name);
    }
   
    public double getPrice(){
        return preis;
    }
    public int getId(){
        return id;
    }
    public String getName(){
        return name;
    }
   
    public void setPrice(double p){
        this.preis=p;
    }
    public void setId(int id){
        this.id=id;
    }
    public void setName(String n){
        this.name=n;
    }

}

Rechnungsposition:
Java:
public class Rechnungsposition {
        private int menge;
        private Artikel a;

       
        public Rechnungsposition(int m, Artikel a){
            setMenge(m);
            setArtikel(a);
        }
       
        public int getMenge(){
            return menge;
        }
        public String getArtikel(){
            return a.getName();
        }
        public void setMenge(int m){
            this.menge=m;
        }
        public void setArtikel(Artikel a){
            this.a=a;
        }
       
}

und Rechnung:
Java:
public class Rechnung {
    private Rechnungsposition pos[]=new Rechnungsposition[20];
    private int billId;
    private String date;
    private double all;


    public Rechnung(int bid, String date, Rechnungsposition a) {
        setBillId(bid);
        setDate(date);
        setAll();

    }

    public int getBillId() {
        return billId;
    }

    public String getDate() {
        return date;
    }

    public double getAll() {
        return all;
    }

    public void setBillId(int b) {
        this.billId = b;
    }

    public void setDate(String d) {
        this.date = d;
    }

    public void setAll() {
        this.all = 1;
    }
    public void setPos(){
       
    }

}
Die berechnung des gesamtpreises kommt noch in set all rein, dafür denke ich ist es am geschicktesten getPrice mit getMenge zu Multiplizieren und dann jeden Artikelpreis miteinander zu addieren. Oder?
 

InfectedBytes

Top Contributor
direkt eine Array oder eine Liste übergeben, oder eine Variable Argumentenliste:
Java:
public Rechnung(int bid, String date, RechnungsPosition... a) {
  // a ist eine Array vom Typ RechnungsPosition
}

Java:
new Rechnung(1, "...", rechnungA, rechnungB);
new Rechnung(2, "...", rechnungA, rechnungB, rechnungC);
//...
 

krys001

Mitglied
soweit gut, vielen Dank.
jetzt hab ich noch ein problem,
folgendes aktuell:
Java:
public class Rechnung {
    private Rechnungsposition pos[];
    private int billId;
    private String date;
    private double all;

    public Rechnung(int bid, String date, Rechnungsposition... a) {
        setBillId(bid);
        setDate(date);
        setAll(a);
        setPos(a);
    }

    public int getBillId() {
        return billId;
    }

    public String getDate() {
        return date;
    }

    public double getAll() {
        return all;
    }

    public void setBillId(int b) {
        this.billId = b;
    }

    public void setDate(String d) {
        this.date = d;
    }

    public void setAll(Rechnungsposition... a) {
        double sum = 0;
        double sum2 = 0;
        int z = 0;
        for (Rechnungsposition i : a) {
            Artikel b = a[z].getArtikel();
            sum += b.getPrice() * a[z].getMenge();
            z++;
        }
        System.out.println(sum);
        for (int i = 0; i < a.length; i++) {
            Artikel b = a[i].getArtikel();
            sum2 += b.getPrice() * a[i].getMenge();
        }
        System.out.println(sum2);

    }

    public void setPos(Rechnungsposition... a) {
        this.pos = a;
    }

}

und Test:
Java:
public class TestRechnung {

    public static void main(String[] args) {
        Rechnung r1; // 3 Milch, 2 Zucker
        Rechnung r2; // BMW Z3, 4 Brot, Milch

        Artikel milk = new Artikel(1.00, 01, "Milch");
        Artikel sugg = new Artikel(0.80, 02, "Zucker");
        Artikel bmw = new Artikel(34000.00, 03, "BMW Z3");
        Artikel bread = new Artikel(1.20, 04, "Brot");
        Rechnungsposition r11 = new Rechnungsposition(3, milk);
        Rechnungsposition r12 = new Rechnungsposition(2, sugg);
        Rechnungsposition r21 = new Rechnungsposition(1, bmw);
        Rechnungsposition r22 = new Rechnungsposition(4, bread);
        Rechnungsposition r23 = new Rechnungsposition(1, milk);

        r1 = new Rechnung(01, "11.11.15", r11, r12);
        r1.getAll();

        r2 = new Rechnung(02, "11.11.15", r21, r22, r23);
        //r2.getAll();
    }

}

Aktuelles Problem, habe beide for schleifen probiert, beide haben das selbe ergebniss, aber sie führen auch beide direkt die rechnung für r1 und für r2 aus, obwohl eigentlich r2.getAll() ausgeklammert ist, auch wenn ich die zeile lösche wird die berechnung ausgeführt für r1 und r2. Ziel ist das für r1.getAll nur der gesamtpreis für rechnung 1 angezeigt wird und bei r2.getAll nur für rechung 2
 

Joose

Top Contributor
Die Fehlerbeschreibung ist etwas wirr ;)
Welchen Wert erwartest du dir bei den Aufruf von "r1.getAll()" und welchen bekommst du tatsächlich?
Welchen Wert erwartest du dir bei den Aufruf von "r2.getAll()" und welchen bekommst du tatsächlich?
Welche Konsolenausgaben erwartest du dir und welche bekommst du tatsächlich?

Wenn du den Aufruf von "r2.getAll()" auskommentierst dann wird diese Methode auch nicht ausgeführt.
In der Methode "getAll()" gibst du nur den Wert "all" zurück. Dieser wird aber nirgends gesetzt. In "setAll" hast du 2 Schleifen die genau das gleiche machen -> eine löschen und den Wert "all" zuweisen.
 

krys001

Mitglied
okay, shame on me. natürlich muss ich an getAll einen wert liefern und keine ausgabe in setAll, voll übersehen das ich die ganze zeit im falschen part arbeite.
und nächstes mal bemühe ich mich auch eine exaktere problembeschreibung zu liefern.
Vielen Dank!!:)

Vieleicht noch ne kleinigkeit die ihr aber auch gerne ignorieren dürft, kapier nur nach dem googeln was nicht.
das ganze gehört zu einer aufgabe, in der aufgabe wird mir gesagt ich soll die Klassen Rechnung, Rechnungsposition und Artikel und überschreiben Sie bei allen 3 Klassen die Methoden equals und toString.

Was ist gemeint mit überschreiben sie die methoden equals und toString?? und wie mach ich das??
 

Neumi5694

Top Contributor
in deinem Satz ein Wort.

Naja, ich konnt's mir trotzdem zusammenreimen.
Jedes Objekt hat eine "public boolean equals(Object o)" und "public String toString()" Methode, die musst du anlegen, damit "überschreibst" du die gleichnamige Methode der übergeordneten Klasse (in deinem Fall Object, da du nicht explizit eine andere Klasse angegeben hast).
Deine IDE wird dir danach wahrscheinlich noch vorschlagen, davor die "@Override" Anmerkung einzufügen. Die bewirkt gar nichts, macht nur deinen Code lesbarer. Damit mrkierst du Methoden, welche eine andere überschreiben oder implementieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Arraygröße einer Klasse von der Main aus vorgeben Java Basics - Anfänger-Themen 3
O Dezimal in Dual...Arraygröße & Runden Java Basics - Anfänger-Themen 4
C Dynamische Arraygröße Java Basics - Anfänger-Themen 2
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Objektname durch Tastaturbefehl eingeben Java Basics - Anfänger-Themen 7
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2
M ArrayList durch OutputStream in Datei Java Basics - Anfänger-Themen 9
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
N Durch Objekte iterieren? Java Basics - Anfänger-Themen 3
J Durch 2-Dimensionales Array "bewegen" will nicht so recht hinhauen Java Basics - Anfänger-Themen 2
B Durch eine Liste von Strings laufen Java Basics - Anfänger-Themen 6
D javacode durch Html ausfuehren Java Basics - Anfänger-Themen 13
K Durch ArrayList laufen Java Basics - Anfänger-Themen 8
X Erste Schritte Lernen durch Videoreihe Java Basics - Anfänger-Themen 35
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
H Text durch Checkbox erscheinen lassen Java Basics - Anfänger-Themen 2
J Datensätze aus Txt Datei auslesen - Datensätze durch stöbern Java Basics - Anfänger-Themen 5
Ananaskirsche Input/Output Platzhalter durch String in yml-Datein ersetzen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben