From 77ed4e7b7151915a33cf8d6d0d18509be4cfd701 Mon Sep 17 00:00:00 2001 From: Laura <3016748@stud.hs-mannheim.de> Date: Mon, 15 Dec 2025 09:04:18 +0100 Subject: [PATCH] =?UTF-8?q?=C3=9Cberarbeiten=20des=20Codes,=20beheben=20ei?= =?UTF-8?q?nes=20LogiksProblems?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shop/src/Quelle | 59 +++++++++++++++++++ .../main/java/backend/pack/Bestellungen.java | 2 +- .../main/java/backend/pack/OnlineShop.java | 58 ++++++++++++------ .../src/main/java/backend/pack/Warenkorb.java | 42 +++++++------ Shop/src/main/java/tui/pack/ShopTUI.java | 13 ++-- 5 files changed, 130 insertions(+), 44 deletions(-) diff --git a/Shop/src/Quelle b/Shop/src/Quelle index 4962ec2..b12ac73 100644 --- a/Shop/src/Quelle +++ b/Shop/src/Quelle @@ -230,3 +230,62 @@ Wenn du möchtest, erkläre ich dir auch: * wie das intern (Array + Größe) umgesetzt ist Sag einfach Bescheid. + + + + (3) größere KI-Änderung, da ich garnicht weitergekommen bin und nicht verstanden habe , wie ich dafür sorge; dass es immer das selbe Objekt ist--------> + Das Hauptproblem in deinem Code: + + Du hast eine Initialisierungsreihenfolge-Problem. Die Objekte werden in falscher Reihenfolge erstellt, was zu NullPointerExceptions führt. Außerdem arbeiten Warenkorb und OnlineShop mit unterschiedlichen Instanzen der Produkte. + + Die kritischen Punkte: + + ShopTUI.main(): Du versuchst wk mit shop.getProduktListe() zu erstellen, aber shop ist noch null. + + OnlineShop.getProduktListe(): Diese Methode gibt einfach ProduktListe zurück, aber die ist oft null, weil sie nie durch ÜbertrageListe() geladen wurde. + + Warenkorb.produktHinzufügen(): Hier wird der Bestand im falschen Objekt geändert. Du änderst eine Kopie, nicht das Original aus der produkte-Liste. + + OnlineShop Konstruktor: warenkorb ist null, wenn auf Artikel zugegriffen wird. + + Lösung - Was du ändern musst: + + In ShopTUI.main() (muss die richtige Reihenfolge haben): + + java + shop = new OnlineShop(); + wk = new Warenkorb(shop.getProduktListe()); + shop.setWarenkorb(wk); + In OnlineShop.getProduktListe() (Null-Prüfung hinzufügen): + + + In OnlineShop Konstruktor (Warenkorb erstellen): + + java + warenkorb = new Warenkorb(ProduktListe); + Artikel = warenkorb.ÜbertrageArtikel(); + In Bestellungen Klasse (Feld wk entfernen): + + java + // Entferne: Warenkorb wk; + // Ändere: ArrayList warenkorb; + // Konstruktor: this.warenkorb = warenkorb; + Warum funktioniert der Bestand nicht? + Dein Warenkorb hat eine Liste von Produkten (produkte), aber wenn du produktHinzufügen aufrufst, änderst du den Bestand am falschen Objekt. Du musst das exakt gleiche Produkt-Objekt finden, das auch in der ProduktListe von OnlineShop ist, und dort den Bestand ändern. + + ÜbertrageListe muss richtig laden: + Stelle sicher, dass ÜbertrageListe() tatsächlich die CSV-Datei liest und LagerList setzt. Wenn LagerList null ist, wird printArray() fehlschlagen. + + Zusammenfassung: + + Initialisierung in richtiger Reihenfolge: Shop → Produktliste → Warenkorb + + getProduktListe() muss die Liste laden, wenn sie null ist + + Bestandsänderungen müssen am Original-Objekt in der gemeinsamen Liste erfolgen + + Alle Klassen müssen die gleichen Objekt-Instanzen verwenden, nicht Kopien + + Das sind die minimalen Änderungen, die nötig sind, um deine NullPointerExceptions zu behegen und sicherzustellen, dass Bestandsänderungen sichtbar werden. + + diff --git a/Shop/src/main/java/backend/pack/Bestellungen.java b/Shop/src/main/java/backend/pack/Bestellungen.java index 8a186b4..b105632 100644 --- a/Shop/src/main/java/backend/pack/Bestellungen.java +++ b/Shop/src/main/java/backend/pack/Bestellungen.java @@ -6,7 +6,7 @@ public class Bestellungen { String kundenName; String Addresse; Warenkorb wk; - ArrayList warenkorb=wk.ÜbertrageArtikel() ; + ArrayList warenkorb ; double Bruttopreis=0; double versandkosten; boolean bestellungBestätigt; diff --git a/Shop/src/main/java/backend/pack/OnlineShop.java b/Shop/src/main/java/backend/pack/OnlineShop.java index 390a347..38938a4 100644 --- a/Shop/src/main/java/backend/pack/OnlineShop.java +++ b/Shop/src/main/java/backend/pack/OnlineShop.java @@ -9,10 +9,20 @@ import java.util.Scanner; public class OnlineShop { private static ArrayList LagerList; - Warenkorb wk =new Warenkorb(); - ArrayList Artikel= wk.ÜbertrageArtikel(); + private ArrayList ProduktListe; + ArrayList Artikel; + private Warenkorb warenkorb; - public String [][] Start() throws FileNotFoundException { + public OnlineShop() throws FileNotFoundException { + ProduktListe = getProduktListe(); + warenkorb = new Warenkorb(ProduktListe); + Artikel = warenkorb.ÜbertrageArtikel(); + } + public void setWarenkorb(Warenkorb wk) { //Von ki(3) + this.warenkorb = wk; + } + + public String [][] Start() throws FileNotFoundException { LagerList=readFile(); String [][]arr= produktArray(LagerList); return arr; @@ -27,6 +37,7 @@ public class OnlineShop { String[] Lager = new String[LagerList.size()]; for (int i = 0; i < LagerList.size(); i++){ Lager[i] = LagerList.get(i); + } String[][] produktArray = new String[LagerList.size()][6]; for(int i=0;i0){ + arrayForPrint[i][j]= String.valueOf(ProduktListe.get(i-1).Bestand); + }else { + arrayForPrint[i][j]=arr[i][j]; + } + } + } + return arrayForPrint; + } public static ArrayList erstelleListe(String[][] produktArray) { ArrayList ProduktListe= new ArrayList<>(); @@ -62,7 +87,6 @@ public class OnlineShop { public ArrayList ÜbertrageListe() throws FileNotFoundException { LagerList=readFile(); String [][]arr= produktArray(LagerList); - String[][] produktArray = Start(); ArrayListProduktListe=erstelleListe(arr); return ProduktListe; @@ -81,19 +105,12 @@ public class OnlineShop { return LagerList; } - /*public boolean[] aufLager() throws FileNotFoundException { //TODO Prüfen ob ich die Methode überhaupt brauche, da bestand gereicht hat - ArrayList ProduktListe= ÜbertrageListe(); - boolean[] aufLager= new boolean[ProduktListe.size()]; - for(int i=0;i0) - aufLager[i]=true; - else - aufLager[i]=false; - } - return aufLager; - }*/ + public ArrayList getProduktListe() throws FileNotFoundException {//Durch KI verbessert (3) + if(ProduktListe==null) + ProduktListe=ÜbertrageListe(); + return ProduktListe; + } public Produkt suchProdukt(String suche) throws FileNotFoundException { - ArrayListProduktListe= ÜbertrageListe(); for(Produkt p : ProduktListe){ if(p.name.equalsIgnoreCase(suche)) return p; @@ -104,14 +121,17 @@ public class OnlineShop { public Bestellungen bestellVorgang(String Name, String Addresse){ Bestellungen bestellung= new Bestellungen(Name, Addresse, Artikel ); - angepassterBestand(); + ArrayList artikel = + new ArrayList<>(warenkorb.ÜbertrageArtikel()); Artikel.clear(); //Mit KI (2) return bestellung; } - public void angepassterBestand(){ + public void angepassterBestand() throws FileNotFoundException { + for (int i=0;i Artikel; - - public Warenkorb() { - + private ArrayList produkte; + public Warenkorb(ArrayList produkte) { + this.produkte=produkte; Artikel = new ArrayList<>(); } - public Produkt welchesProdukt(int vltID) throws FileNotFoundException { - OnlineShop Shop = new OnlineShop(); - ArrayList produkte = Shop.ÜbertrageListe(); + + public Produkt welchesProdukt(int vltID) { for(Produkt p: produkte){ if(p.ID==vltID){ @@ -24,34 +23,39 @@ public class Warenkorb { }return null; } - public boolean aufLager(Produkt p){ - if(p.Bestand>0) + public boolean aufLager(Produkt p,int Menge){ + if((p.Bestand-Menge)>=0) return true; else return false; } - public void produktHinzufügen(Produkt p,int Menge) { - for(int i=0;i>>>>>>>>>Willkommen zum DanDan-Shop!<<<<<<<<<<"); shop= new OnlineShop(); + wk = new Warenkorb(shop.getProduktListe()); + shop.setWarenkorb(wk);; //von KI(3) boolean cont = true; while (cont) { @@ -61,7 +64,7 @@ public class ShopTUI { public static void produktangebot() throws FileNotFoundException { System.out.println("Unser Produktangebot:"); - String[][] produkt = shop.Start(); + String[][] produkt = shop.printArray(); IO.println(); for (int i = 0; i < produkt.length; i++) { @@ -86,7 +89,7 @@ public class ShopTUI { int count=0; Produkt vlt=null; // boolean[] aufLager= shop.aufLager(); - ArrayList ProduktListe= shop.ÜbertrageListe(); + ArrayList ProduktListe= shop.getProduktListe(); IO.println(); Produkt gefunden= shop.suchProdukt(suche); if(gefunden==null) { @@ -141,7 +144,7 @@ public class ShopTUI { String Wahl; do { IO.println(">>Warenkorb-Menü<<"); - IO.println("1. Artikel hinzüfugen [Bitte hierfür am besten die Produkt ID benutzen!]"); + IO.println("1. Artikel hinzüfugen [Bitte hierfür die Produkt ID benutzen!]"); IO.println("2. Meinen Warenkorb anzeigen "); IO.println("3. Etwas aus den Warenkorb löschen"); IO.println("4. Die Menge reduzieren"); @@ -179,7 +182,7 @@ public class ShopTUI { if(geklappt){ IO.println("Das Produkt wurde zum Warenkorb hinzugefügt!!"); }else - IO.println("Die ID existiert nicht oder das Produkt ist leider nicht auf Lager"); + IO.println("Die ID existiert nicht oder das Produkt ist leider nicht in der Menge auf Lager"); } public void warenkorbAnzeigen() {