Ausgabe Gesamtpreis

Du solltest in der Schleife den Preis für einzelne Artikel nicht nur abrufen, sondern auch was damit machen, z.B. addieren.
 
Das habe ich auch schon versucht, geht leider nicht

Code:
public double getGesamtBruttopreis()
     {
        for (int i = 0; i < artikel.length && artikel[i] != null; i++)
        {
        gesamtBruttopreis += artikel[i].getBruttopreis();
        }
        return gesamtBruttopreis;
 
Max, kauft Buch (Preis: 35.0EUR)
Artikelnummer: 1334
Artikelbezeichnung: Buch
Bruttopreis: 37.45EUR

Max, kauft Lizenz (Preis: 260.0EUR)
Artikelnummer: 4567
Artikelbezeichnung: Lizenz
Bruttopreis: 309.4EUR

Max, kauft Software (Preis: 250.0EUR)
Artikelnummer: 6789
Artikelbezeichnung: Software
Bruttopreis: 297.5EUR

Im Warenkorb befinden sich 3 Artikel
Gesamt Nettopreis: 0.0EUR
Gesamt Bruttopreis: 0.0EUR

Nein es müsste ja Gesamt Bruttopreis: 644,35EUR kommen
 
Ich glaub ich hab die Lösung

Code:
public class TestWarenkorb
{
    public static void main(String[] args)
    {
    
        Warenkorb wk1 = new Warenkorb(12344, 34553, "Max");
        
        System.out.println("WarenkorbID:"+ " " +wk1.getWarenkorbID());
        System.out.println("Kundennummer:"+ " " +wk1.getKundennummer());
        System.out.println("Kundenname:"+ " " +wk1.getKunde());
        
        Artikel[] artikel = new Artikel[3];
        artikel[0] = new Artikel(1334, "Buch", 35.00, 0.07);
        artikel[1] = new Artikel(4567, "Lizenz", 260.00, 0.19);
        artikel[2] = new Artikel(6789, "Software", 250.00, 0.19);
        
          for (int i = 0; i < Artikel.getBestand(); i++)
          {
              System.out.println("\n" + wk1.getKunde() + ", kauft " +artikel[i].getArtikelbeschreibung() + " " +"(Preis: " +artikel[i].getNettopreis() + "EUR)");
              System.out.println("Artikelnummer: " +artikel[i].getArtikelnummer());
              System.out.println("Artikelbezeichnung: " +artikel[i].getArtikelbeschreibung());
              System.out.println("Bruttopreis: " +artikel[i].getBruttopreis() + "EUR");
          }
              
          System.out.println("\nIm Warenkorb befinden sich " + Artikel.getBestand()+ " Artikel");
          System.out.println("Gesamt Nettopreis:"+ " " +wk1.getGesamtNettopreis() + "EUR");
          System.out.println("Gesamt Bruttopreis:"+ " " +wk1.getGesamtBruttopreis() + "EUR");   
          
         int summe = 0;
          for (int b=0; b < Artikel.getBestand(); b++)
          {
            summe += artikel[b].getBruttopreis();
          }
          System.out.println("Summe = " + summe);
          
        }
          
          
    }



WarenkorbID: 12344
Kundennummer: 34553
Kundenname: Max

Max, kauft Buch (Preis: 35.0EUR)
Artikelnummer: 1334
Artikelbezeichnung: Buch
Bruttopreis: 37.45EUR

Max, kauft Lizenz (Preis: 260.0EUR)
Artikelnummer: 4567
Artikelbezeichnung: Lizenz
Bruttopreis: 309.4EUR

Max, kauft Software (Preis: 250.0EUR)
Artikelnummer: 6789
Artikelbezeichnung: Software
Bruttopreis: 297.5EUR

Im Warenkorb befinden sich 3 Artikel
Gesamt Nettopreis: 0.0EUR
Gesamt Bruttopreis: 0.0EUR
Summe = 643

 
Code:
      for (int b=0; b < Artikel.getBestand(); b++)
          {
            wk1.gesamtNettopreis += artikel[b].getNettopreis();
            wk1.gesamtBruttopreis += artikel[b].getBruttopreis();
          }
habs verbessert
 
Ich glaub ich hab die Lösung
Das ist keine Lösung, das ist Quatsch.

Du musst die Artikel dem Warenkorb hinzufügen und nicht außerhalb des Warenkorbs die Artikeltexte ausgeben.

Edit:

Gibt es Vorgaben, welche Methoden deine Klassen enthalten sollen/dürfen?

Aktuell hat die Klasse Warenkorb nur eine Methode, der du ein Array von Artikel übergeben kannst. Das wäre demnach der Weg.

Edit2:

Die Methode getBestand() gehört auch nicht zu Artikel, denn ein Artikel ist immer genau ein Artikel, sondern zum Warenkorb, der die Artikel enthalten soll.
 
Zuletzt bearbeitet:
@Jaro nachdem Du das Prinzip des Summierens verstanden hast, solltest Du den Spaß in den Warenkorb integrieren (s. Post von @temi). Dazu überlegst Du Dir, dass ein neuer Warenkorb leer ist, also 0 (und nicht 3) Artikel enthält. Mit setArtikel kannst Du die Artikel, die sich im Warenkorb befinden festlegen. An der Stelle kannst Du im Warenkorb auch die Preise berechnen. Alternativ kannst Du das auch on-the-fly in den Methoden getGesamtBruttopreis und getGesamtNettopreis machen.
 
Ich hab den Warenkorb neu aufgebaut mit ArrayList und nicht mehr Statisch.
Hab hier aber ein Problem das ich nicht finde.

1. Die Eingabe der Artikelbezeichnung wird einfach übersprungen Warum?
2. ich kann über den Scanner kein Double eingeben .nextDouble (Nur Ausgabe). Sonst kommt ein Fehler
2. Wie erstelle ich über die ArrayListe den Gesamtpreis?

Quellcode....
 
Code:
public class Artikel
{
    private int artikelnummer;
    private String artikelbeschreibung;
    private double nettopreis;
    private double steuersatz;
    
    private static int bestand = 0;
    
    public Artikel (int artikelnummer, String artikelbeschreibung,
                    double nettopreis, double steuersatz)
    {
        this.artikelnummer = artikelnummer;
        this.artikelbeschreibung = artikelbeschreibung;
        this.nettopreis = nettopreis;
        this.steuersatz = steuersatz;
        bestand++;
    }

    // Bruttopreis berechnen
    
    public double getBruttopreis()
    {
        double bruttopreis = nettopreis + (nettopreis * steuersatz);
        return Math.round(100.0 * bruttopreis) / 100.0;
    }
    
    // Getter und Setter Methoden
    
    public int getArtikelnummer()
    {
        return artikelnummer;
    }

    public void setArtikelnummer(int artikelnummer)
    {
        this.artikelnummer = artikelnummer;
    }

    public String getArtikelbeschreibung()
    {
        return artikelbeschreibung;
    }

    public void setArtikelbeschreibung(String artikelbeschreibung)
    {
        this.artikelbeschreibung = artikelbeschreibung;
    }

    public double getNettopreis()
    {
        return nettopreis;
    }

    public void setNettopreis(double nettopreis)
    {
        this.nettopreis = nettopreis;
    }

    public double getSteuersatz()
    {
        return steuersatz;
    }

    public void setSteuersatz(double steuersatz)
    {
        this.steuersatz = steuersatz;
    }
    
    public static int getBestand()
    {
        return bestand;
    }
    
    @Override
public String toString()
{
    String state = "Artikelnummer: " +artikelnummer + " Artikelbezeichnung: " + artikelbeschreibung + " Nettopreis: " + nettopreis + "EUR" + " Steuersatz: " + steuersatz;
    return state;
}
    
    
}

Code:
import java.util.ArrayList;
import java.util.Scanner;

public class Warenkorb
{
    private int warenkorbnummer;
    private int kundennummer;
    private String kunde;
    public double gesamtNettopreis = 0;
    public double gesamtBruttopreis = 0;
    
    ArrayList<Artikel> ArtikelListe = new ArrayList<Artikel>();
    
    // Konstruktor
    
    public Warenkorb (int warenkorbnummer, int kundennummer, String kunde)
    {
        this.warenkorbnummer = warenkorbnummer;
        this.kundennummer = kundennummer;
        this.kunde = kunde;
    }

     // Artikel Hinzufügen
    
    public void addArtikel()
    {
       System.out.println();
       System.out.println("Geben Sie die Artikelnummer ein (z.B. 1234)");
       Scanner eingabe = new Scanner(System.in);
       int artikelnummer = eingabe.nextInt();

       System.out.println("Geben Sie die Bezeichnung ein (z.B. Buch)");
       String artikelbeschreibung = eingabe.nextLine();

       System.out.println("Geben Sie den Nettopreis ein (z.B. 12.50)");
       double nettopreis = eingabe.nextDouble();
      
       System.out.println("Geben Sie den Steuersatz ein (z.B. 0.19 oder 0.07)");
       double steuersatz = eingabe.nextDouble();

       Artikel artikel = new Artikel(artikelnummer, artikelbeschreibung, nettopreis, steuersatz);
       ArtikelListe.add(artikel);
       System.out.println("Artikel hinzugefügt");
    }
    
    // Artikel löschen
    
    public void removeArtikel()
    {
        ArtikelListe.clear();
        System.out.println("Artikel gelöscht");
    }
    
    // Artikel anzeigen
    
    public void anzeigeArtikel()
    {
        System.out.println( ArtikelListe.size()+ " Artikel ");
           for (Artikel x : ArtikelListe)
           {
               System.out.println(x.toString());
           }
    }
    
    // Getter und Setter Methoden

    public String getKunde()
    {
        return kunde;
    }

    public void setKunde(String kunde)
    {
        this.kunde = kunde;
    }

    public double getGesamtNettopreis()
    {
        return gesamtNettopreis;
    }

    public double getGesamtBruttopreis()
    {
    
        return gesamtBruttopreis;
    }

    public int getWarenkorbnummer()
    {


MAIN()

[CODE]import java.util.Scanner;

public class TestWarenkorb
{
      public static void main( String [] args)
      {
            Scanner eingabe = new Scanner(System.in);
            Warenkorb wk = new Warenkorb(12345, 444444, "Kunde1");
        
            int menu = 0;
            while (menu != 4)
            {
                System.out.println("");
                System.out.println("Warenkorbnummer:"+ " " +wk.getWarenkorbnummer());
                System.out.println("Kundennummer:"+ " " +wk.getKundennummer());
                System.out.println("Kundenname:"+ " " +wk.getKunde());
                System.out.println("");
                System.out.println("(1) Warenkorb Anzeigen ");
                System.out.println("(2) Artikel Hinzufügen ");
                System.out.println("(3) Löschen aller Artikel ");
                System.out.println("(4) Beenden ");
                System.out.println("");
                menu = eingabe.nextInt(); 

                if (menu == 1)
                {
                    wk.anzeigeArtikel();
                }

                if (menu == 2)
                {
                    wk.addArtikel();
                }
                
                if (menu == 3)
                {
                    wk.removeArtikel();
                }
            }
        }
    }
return warenkorbnummer;
}

public void setWarenkorbnummer(int warenkorbnummer)
{
this.warenkorbnummer = warenkorbnummer;
}

public int getKundennummer()
{
return kundennummer;
}

public void setKundennummer(int kundennummer)
{
this.kundennummer = kundennummer;
}
}[/CODE]
 

Warenkorbnummer: 12345
Kundennummer: 444444
Kundenname: Kunde1

(1) Warenkorb Anzeigen
(2) Artikel Hinzufügen
(3) Löschen aller Artikel
(4) Beenden

2

Geben Sie die Artikelnummer ein (z.B. 1234)
1234

Geben Sie die Bezeichnung ein (z.B. Buch) !!!!!!!!!! WARUM? wird das übersprungen????
Geben Sie den Nettopreis ein (z.B. 12.50). !!!!WARUM? Scanner .nextDouble INT Eingabe -> Ausgabe Double???
1

Geben Sie den Steuersatz ein (z.B. 0.19 oder 0.07)
1

Artikel hinzugefügt
 
Verschieb mal bitte die Eingaben nach TestWarenkorb. Der Warenkorb selbst ist eine Art Datenstruktur.

Beispielsweise kommt die Methode addArtikel() nach TestWarenkorb und dort schreibst Du dann statt
Java:
    ArtikelListe.add(artikel);
einfach
Java:
    wk.add(artikel);
Die Klasse Warenkorb bekommt dafür eine Methode der Art:
Java:
public void add(Artikel artikel) {
    artikelListe.add(artikel);
}
BTW: in Java schreibt man Bezeichner für Methoden, Variablen, Parameter in lowerCamelCase, d. h. per Konvention muss es artikelListe und nicht ArtikelListe heißen.

Die Eingabe der Artikelbezeichnung wird einfach übersprungen Warum?
Das liegt daran, dass ein nextInt() den Zeilenumbruch nicht ausliest. Der wird mit nextLine() gelesen (ergibt dann einen leeren String) und das passiert bei Dir eben in der Artikelbezeichnung. Für einfach davor nochmal einen nextLine-Aufruf ein.

ich kann über den Scanner kein Double eingeben .nextDouble (Nur Ausgabe). Sonst kommt ein Fehler
Was gibst Du ein? Probier mal Komma statt Punkt.

Wie erstelle ich über die ArrayListe den Gesamtpreis?
Das hast Du doch schon gemacht :) Eine Möglichkeit wäre, on-the-fly:
Java:
    public double getGesamtNettopreis()
    {
        double preis = 0d;
        for (Artikel artikel : artikelListe) {
            preis += artikel.getNettopreis();
        }
        return preis;
    }
Die anderen Methoden analog. Die Variablen gesamtNettopreis etc. brauchst Du dann nicht mehr. Statt on-the-fly kannst Du alternativ auch mit Variablen weiterarbeiten und diese bei jeder Änderung anpassen.
 
Abwarten... Du wirst vermutlich noch auf ein Problem stoßen, bei der Übernahme der Methode in TestWarenkorb :)

Mal ganz allgemein: es hilft manchmal, sich Objekte wie Personen oder andere reale Objekte vorzustellen. Wenn Du Dir einen Einkaufswagen ansiehst, dann fragt Dich der nicht, welchen Artikel Du hineinlegen willst. Du benutzt ihn einfach als Behälter für Deine Artikel. Und genauso das machst Du dann auch im Code; mal auf Deutsch: einkaufswagen.hinzufügen(artikel). Mist, meine Leertaste gibt gerade den Geist auf. Ein Königreich für ein Space :)
 
Die Übernahme der Methode in den TestWarenkorb hat gut funktioniert.
Ja mit dem objektorientierte Konzept bin ich vertraut. Gestalte mir auch vorher immer brav die Diagramme in UML... ;)

Nur mit der Implementierung da hängt es, da fehlt mir komplett die Praxis...
 
Gestalte mir auch vorher immer brav die Diagramme in UML... ;)
Mit einem Diagramm drückst Du nur Deine Überlegungen aus. UML hilft in erster Linie bei der Kommunikation mit Dritten und ggf. dabei, den Überblick zu behalten. Viel wichtiger sind die Überlegungen, die zum Diagramm führen. Hier können Use-Cases (oder User Stories) und CRC-Karten hilfreich sein.

Nur mit der Implementierung da hängt es, da fehlt mir komplett die Praxis...
Kommt Zeit, kommt Praxis :)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben