Den Warenkorb ausgearbeitet
parent
68002788c5
commit
97e70a8a3f
|
|
@ -0,0 +1,127 @@
|
|||
(1)
|
||||
->> Der Verlauf für die Quelle aber eigentlich nur punkt 1 und 2 benutzt
|
||||
Meine Frage:
|
||||
ich habe eine ArrayListe bestehen hierraus:public class WarenkorbArtikel {
|
||||
Produkt produkt;
|
||||
int Menge;
|
||||
|
||||
public WarenkorbArtikel(Produkt produkt, int Menge) {
|
||||
this.produkt = produkt;
|
||||
this.Menge = Menge;
|
||||
} wie würde ich die ausdrucken?
|
||||
|
||||
Chatgpts Antwort:
|
||||
Um eine `ArrayList<WarenkorbArtikel)` sinnvoll **auszugeben**, gibt es in Java mehrere saubere Varianten. Best Practice ist, die Ausgabe **über `toString()`** zu kapseln und dann die Liste zu iterieren.
|
||||
|
||||
---
|
||||
|
||||
## 1. `toString()` in `WarenkorbArtikel` überschreiben (empfohlen)
|
||||
|
||||
```java
|
||||
public class WarenkorbArtikel {
|
||||
Produkt produkt;
|
||||
int menge;
|
||||
|
||||
public WarenkorbArtikel(Produkt produkt, int menge) {
|
||||
this.produkt = produkt;
|
||||
this.menge = menge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Produkt: " + produkt + ", Menge: " + menge;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
⚠️ **Wichtig:**
|
||||
Damit das sinnvoll aussieht, sollte auch `Produkt` eine eigene `toString()`-Methode besitzen.
|
||||
|
||||
Beispiel:
|
||||
|
||||
```java
|
||||
public class Produkt {
|
||||
String name;
|
||||
double preis;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return name + " (" + preis + " €)";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. ArrayList ausdrucken (klassische Schleife)
|
||||
|
||||
```java
|
||||
ArrayList<WarenkorbArtikel> warenkorb = new ArrayList<>();
|
||||
|
||||
for (WarenkorbArtikel artikel : warenkorb) {
|
||||
System.out.println(artikel);
|
||||
}
|
||||
```
|
||||
|
||||
Da `toString()` überschrieben ist, wird automatisch die gewünschte Darstellung genutzt.
|
||||
|
||||
---
|
||||
|
||||
## 3. Ausgabe mit Index (falls benötigt)
|
||||
|
||||
```java
|
||||
for (int i = 0; i < warenkorb.size(); i++) {
|
||||
System.out.println((i + 1) + ". " + warenkorb.get(i));
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Direkter Zugriff auf Felder (nicht empfohlen, aber möglich)
|
||||
|
||||
```java
|
||||
for (WarenkorbArtikel artikel : warenkorb) {
|
||||
System.out.println(
|
||||
"Produkt: " + artikel.produkt +
|
||||
", Menge: " + artikel.menge
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
❌ Schlechter Stil, da Kapselung verletzt wird
|
||||
✔️ Nur akzeptabel für sehr einfache Übungsaufgaben
|
||||
|
||||
---
|
||||
|
||||
## 5. Sauberste Variante (mit Gettern)
|
||||
|
||||
```java
|
||||
public Produkt getProdukt() {
|
||||
return produkt;
|
||||
}
|
||||
|
||||
public int getMenge() {
|
||||
return menge;
|
||||
}
|
||||
```
|
||||
|
||||
```java
|
||||
for (WarenkorbArtikel artikel : warenkorb) {
|
||||
System.out.println(
|
||||
"Produkt: " + artikel.getProdukt() +
|
||||
", Menge: " + artikel.getMenge()
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Empfehlung für Klausur / gute Praxis
|
||||
|
||||
1. `toString()` überschreiben
|
||||
2. `for-each`-Schleife verwenden
|
||||
3. Keine direkten Feldzugriffe von außen
|
||||
|
||||
Wenn du willst, erkläre ich dir **warum `toString()` so wichtig ist**, oder wie man das **formatiert (Tabellen, Preise summieren, Gesamtpreis berechnen)**.
|
||||
|
||||
|
||||
|
|
@ -9,6 +9,7 @@ import java.util.Scanner;
|
|||
|
||||
public class OnlineShop {
|
||||
private static ArrayList<String> LagerList;
|
||||
Warenkorb wk =new Warenkorb();
|
||||
|
||||
|
||||
public String [][] Start() throws FileNotFoundException {
|
||||
|
|
@ -21,6 +22,7 @@ public class OnlineShop {
|
|||
|
||||
|
||||
|
||||
|
||||
public String[][] produktArray(ArrayList Lagerlist) throws FileNotFoundException {
|
||||
String[] Lager = new String[LagerList.size()];
|
||||
for (int i = 0; i < LagerList.size(); i++){
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class Produkt {
|
|||
|
||||
public String toString() {
|
||||
return this.name + " " + this.preis + " Euro.";
|
||||
}
|
||||
} //Noch von Hummel, habe ich vergessen gehabt für den Warwnkorb und dann KI gebraucht...
|
||||
public double berechneMwst(){
|
||||
return Math.round((this.preis-(this.preis/(1+this.mwst/100)))*100.0)/100.0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,19 @@ public class Warenkorb {
|
|||
}
|
||||
|
||||
public void produktHinzufügen(Produkt p,int Menge) {
|
||||
for(int i=0;i<Artikel.size();i++){
|
||||
if(Artikel.get(i).produkt.ID==p.ID){
|
||||
int neu=Artikel.get(i).Menge+Menge;
|
||||
Artikel.get(i).Menge=neu;
|
||||
Artikel.get(i).produkt.Bestand-= Menge;
|
||||
if(Artikel.get(i).produkt.Bestand<0)
|
||||
Artikel.get(i).produkt.Bestand=0;
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
p.Bestand-=Menge;
|
||||
Artikel.add(new WarenkorbArtikel(p, Menge));
|
||||
}
|
||||
public boolean ProduktDa (int ID,int Menge) throws FileNotFoundException {
|
||||
|
|
@ -45,6 +58,28 @@ public class Warenkorb {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
public void andereMenge(int ID,int Menge) {
|
||||
for(int i=0;i<Artikel.size();i++){
|
||||
if(Artikel.get(i).produkt.ID==ID){
|
||||
Artikel.get(i).produkt.Bestand = Artikel.get(i).produkt.Bestand + Menge; // reduzierte Menge aufaddieren
|
||||
Artikel.get(i).Menge=Menge;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
public void entferneArtikel(int ID) {
|
||||
for(int i=0;i<Artikel.size();i++){
|
||||
if(Artikel.get(i).produkt.ID==ID){
|
||||
Artikel.remove(i); //Von w3 Schools, da nur eine Zeile habe ich es gelassen
|
||||
}
|
||||
}
|
||||
}
|
||||
public ArrayList<WarenkorbArtikel> ÜbertrageArtikel() {
|
||||
return Artikel;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,17 @@
|
|||
package pack;
|
||||
|
||||
public class WarenkorbArtikel {
|
||||
private Produkt produkt;
|
||||
private int Menge;
|
||||
Produkt produkt;
|
||||
int Menge;
|
||||
|
||||
public WarenkorbArtikel(Produkt produkt, int Menge) {
|
||||
this.produkt = produkt;
|
||||
this.Menge = Menge;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Produkt: " + produkt + ", Menge: " + Menge; //Mit KI siehe (1)
|
||||
}
|
||||
public double berechneGesamtPreis(){
|
||||
double preis= produkt.preis*Menge;
|
||||
return preis;
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ public class ShopTUI {
|
|||
}
|
||||
|
||||
System.out.println("Auf Wiedersehen!");
|
||||
sc.close();
|
||||
}
|
||||
|
||||
public boolean hauptmenü() throws FileNotFoundException {
|
||||
|
|
@ -30,7 +31,7 @@ public class ShopTUI {
|
|||
IO.println(" << H a u p t m e n ü >> ");
|
||||
IO.println("1.Produktangebot");
|
||||
IO.println("2.Produktsuche");
|
||||
IO.println("3.Mein Warenkorb");
|
||||
IO.println("3.Warenkorb-Menü(hierüber Produkte Hinzufügen)");
|
||||
IO.println("4. Bestellungen");
|
||||
IO.println("5. Exit ");
|
||||
IO.print(">>");
|
||||
|
|
@ -46,7 +47,7 @@ public class ShopTUI {
|
|||
MeinWarenkorb();
|
||||
break;
|
||||
case "4": case "bestellungen": case"Bestellungen":
|
||||
//Todo vlt lasse ich das ganz beim Warenkorb
|
||||
bestellen();
|
||||
break;
|
||||
case "5": case "exit " : case "Exit":
|
||||
return false;
|
||||
|
|
@ -77,7 +78,7 @@ public class ShopTUI {
|
|||
IO.print(" | ");
|
||||
}
|
||||
IO.println();
|
||||
}
|
||||
}//TOD= vlt hier auch hinzufügen aufrufwn
|
||||
|
||||
} public static void produktsuche() throws FileNotFoundException {
|
||||
IO.print("Ich suche: ");
|
||||
|
|
@ -91,7 +92,7 @@ public class ShopTUI {
|
|||
if(gefunden==null) {
|
||||
for(int i=0;i<ProduktListe.size();i++) {
|
||||
for (int j = 0; j < 5&& j<ProduktListe.get(i).name.length(); j++) {
|
||||
if (suche.charAt(j) == (ProduktListe.get(i).name).charAt(j)){
|
||||
if (suche.charAt(j) == (ProduktListe.get(i).name).charAt(j)){ //Todo gucken warum Ignore.Case nicht klappt
|
||||
count++;
|
||||
if(count==4){
|
||||
vlt=ProduktListe.get(i);
|
||||
|
|
@ -103,7 +104,7 @@ public class ShopTUI {
|
|||
}
|
||||
if(vlt.name.length()>4) {
|
||||
IO.println("Meinten Sie vielleicht "+ vlt.name + " " +vlt.preis+ "€ ?");
|
||||
IO.println("Unser Bestand beträgt "+ vlt.Bestand);
|
||||
IO.println("Unser Bestand beträgt "+ vlt.Bestand);//TODO hinzufügen ermöglichen
|
||||
}else
|
||||
IO.println("Das gesuchte Produkt wurde leider nicht gefunden");
|
||||
} else {
|
||||
|
|
@ -126,9 +127,9 @@ public class ShopTUI {
|
|||
Warenkorb warenkorb;
|
||||
String Wahl;
|
||||
do {
|
||||
IO.print(">>Warenkorb-Menü<<");
|
||||
IO.println(">>Warenkorb-Menü<<");
|
||||
IO.println("1. Artikel hinzüfugen [Bitte hierfür am besten die Produkt ID benutzen!]");
|
||||
IO.println("2. Meinen Warenkorb anzeigen bzw Bestellung aufgeben");
|
||||
IO.println("2. Meinen Warenkorb anzeigen ");
|
||||
IO.println("3. Etwas aus den Warenkorb löschen");
|
||||
IO.println("4. Die Menge reduzieren");
|
||||
IO.println("5. back");
|
||||
|
|
@ -139,6 +140,16 @@ public class ShopTUI {
|
|||
hinzufuegen();
|
||||
break;
|
||||
case "2":
|
||||
warenkorbAnzeigen();
|
||||
break;
|
||||
case "3":
|
||||
artikelLöschen();
|
||||
break;
|
||||
case "4":
|
||||
mengeReduzieren();
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
} while (!Wahl.equals("5")||Wahl.equalsIgnoreCase("back"));
|
||||
|
||||
|
|
@ -158,5 +169,41 @@ public class ShopTUI {
|
|||
IO.println("Die ID existiert nicht oder das Produkt ist leider nicht auf Lager");
|
||||
|
||||
}
|
||||
public void warenkorbAnzeigen() {
|
||||
IO.println("====Mein Warenkorb====");
|
||||
ArrayList<WarenkorbArtikel> Artikel=wk.ÜbertrageArtikel();
|
||||
//ArrayList<WarenkorbArtikel> warenkorb = new ArrayList<>(); //Mit KI,siehe (1)[ // Ergänzung Fehler von der KI selber korrigiert
|
||||
|
||||
for (WarenkorbArtikel artikel : Artikel) {
|
||||
System.out.println(artikel); //bis hier KI
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
public void artikelLöschen() {
|
||||
IO.println("Geben sie die ID des Produktes welches sie entfernen wollen ein");
|
||||
IO.print("ID");
|
||||
int ID=sc.nextInt();
|
||||
sc.nextLine();
|
||||
wk.entferneArtikel(ID);
|
||||
IO.println("Sollte der Artikel im Warenkorb gewesen sein, wurde er entfernt");
|
||||
}
|
||||
public void mengeReduzieren() {
|
||||
IO.println("Geben sie die ID von dem Produkt an, dessen Menge sie reduzieren wollen");
|
||||
IO.print("ID");
|
||||
IO.println();
|
||||
int ID=sc.nextInt();
|
||||
sc.nextLine();
|
||||
IO.println("Um wieviel wollen sie die Anzahl reduzieren?");
|
||||
IO.print("um:");
|
||||
int red=sc.nextInt();
|
||||
sc.nextLine();
|
||||
wk.andereMenge(ID,red);
|
||||
IO.println();
|
||||
IO.println("Die Menge wurde reduziert");
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue