Rabatt-Berechnungsprogramm

Hallo,

ich bereite mich gerade auf eine Klausur vor und mache dazu folgende Übungsklausur-Aufgabe:
struktogramm8dsa0.png


Mein Struktugramm zu dieser Aufgabe sieht wie folgt aus:
rabatt-berechnungsprotis2t.png


Wäre dies so in Ordnung? Zur Übung habe ich dieses Struktugramm dann umgesetzt und bin ziemlich ins Zweifeln gekommen, da mir meine Lösung nicht sehr elegant erscheint...
Java:
package rabatt.programm;
import Prog1Tools.IOTools;

public class RabattProgramm
{

    public static void main(String[] args)
    {
        double  nettoPreis;
        boolean ende = true;
      
        do
        {
            nettoPreis = IOTools.readDouble("Geben Sie den Netto-Verkaufswert ein: ");
          
            if (nettoPreis < 1000)
            {
                double reduzNettoPreisBar = nettoPreis*((double)1-((double)3/(double)100));
                double reduzNettoPreis14Tage = nettoPreis*((double)1-((double)2/(double)100));
                double reduzNettoPreisIn4Wochen = nettoPreis*((double)1-((double)1/(double)100));
              
                double mwst = nettoPreis*((double)0.19);
                double mwstBar = reduzNettoPreisBar*((double)0.19);
                double mwst14Tage = reduzNettoPreis14Tage*((double)0.19);
                double mwstIn4Wochen = reduzNettoPreisIn4Wochen*((double)0.19);
              
                double bruttoPreis = nettoPreis + mwst;
                double bruttoPreisBar = reduzNettoPreisBar + mwst;
                double bruttoPreis14Tage = reduzNettoPreis14Tage + mwst;
                double bruttoPreisIn4Wochen = reduzNettoPreisIn4Wochen + mwst;
              
                System.out.println("Netto-Verkaufswert: " + nettoPreis + "€");
                System.out.println();
                System.out.println("\t\t\t\t"+"Reduzierter Verkaufswert" + "\t\t" + "MwSt." + "\t\t" + "Brutto-Verkaufswert");
                System.out.println("Barzahlung \t\t\t\t" + reduzNettoPreisBar + "\t\t\t\t" + mwstBar +"\t\t\t" + bruttoPreisBar);
                System.out.println("Zahlung in 14 Tagen \t\t\t" + reduzNettoPreis14Tage + "\t\t\t\t" + mwst14Tage + "\t\t\t" + bruttoPreis14Tage);
                System.out.println("Zahlung in 4 Wochen \t\t\t" + reduzNettoPreisIn4Wochen + "\t\t\t\t" + mwstIn4Wochen + "\t\t\t" + bruttoPreisIn4Wochen);
                System.out.println("Zahlung nach 4 Wochen \t\t\t" + nettoPreis + "\t\t\t\t" + mwst + "\t\t\t" + bruttoPreis);
            }
            else
            {
                double reduzNettoPreisBar = nettoPreis*((double)1-((double)5/(double)100));
                double reduzNettoPreis14Tage = nettoPreis*((double)1-((double)3/(double)100));
                double reduzNettoPreisIn4Wochen = nettoPreis*((double)1-((double)0/(double)100));
              
                double mwst = nettoPreis*((double)0.19);
                double mwstBar = reduzNettoPreisBar*((double)0.19);
                double mwst14Tage = reduzNettoPreis14Tage*((double)0.19);
                double mwstIn4Wochen = reduzNettoPreisIn4Wochen*((double)0.19);
              
                double bruttoPreis = nettoPreis + mwst;
                double bruttoPreisBar = reduzNettoPreisBar + mwst;
                double bruttoPreis14Tage = reduzNettoPreis14Tage + mwst;
                double bruttoPreisIn4Wochen = reduzNettoPreisIn4Wochen + mwst;
              
                System.out.println("Netto-Verkaufswert: " + nettoPreis + "€");
                System.out.println();
                System.out.println("\t\t\t\t"+"Reduzierter Verkaufswert" + "\t\t" + "MwSt." + "\t\t" + "Brutto-Verkaufswert");
                System.out.println("Barzahlung \t\t\t\t" + reduzNettoPreisBar + "\t\t\t\t" + mwstBar +"\t\t\t" + bruttoPreisBar);
                System.out.println("Zahlung in 14 Tagen \t\t\t" + reduzNettoPreis14Tage + "\t\t\t\t" + mwst14Tage + "\t\t\t" + bruttoPreis14Tage);
                System.out.println("Zahlung in 4 Wochen \t\t\t" + reduzNettoPreisIn4Wochen + "\t\t\t\t" + mwstIn4Wochen + "\t\t\t" + bruttoPreisIn4Wochen);
                System.out.println("Zahlung nach 4 Wochen \t\t\t" + nettoPreis + "\t\t\t\t" + mwst + "\t\t\t" + bruttoPreis);
            }
        } while (ende == true);
    }
  
}

Vielen Dank schon mal.
 

MWin123

Bekanntes Mitglied
Statt prozedural solltest du objektorientiert programmieren.

Du hast viel doppelten Code. Den kannst du in eine Methode auslagern und die dann aufrufen.
Die ganzen (double) casts sind größtenteils überflüssig.
 

strußi

Top Contributor

strußi

Top Contributor
du kannst es auch so versuchen
Java:
int rabatt[ ] [ ]  = { { 3, 2, 1, 0}, { 5, 3, 2, 0}};
das Ergebnis kann auch in einem solchen Array liegen.
 
Im Moment sieht das Ganze bei mir so aus:
Java:
package rabattprogramm_v2;
import Prog1Tools.IOTools;

public class RabattProgramm_v2
{
    public static void main(String[] args)
    {
        int[][] rabatt = new int[4][2];
        rabatt[0] = new int[] {3,5};
        rabatt[1] = new int[] {2,3};
        rabatt[2] = new int[] {1,2};
        rabatt[3] = new int[] {0,0};
 
        double[][] preise = new double[4][3];
 
        boolean abbruch = true;
 
        do
        {
            double nettoPreis = IOTools.readDouble("Bitte geben Sie den Netto-Verkaufspreis ein: ");
     
            int rabattSpalte;
     
            if (nettoPreis < 1000)
            {
                rabattSpalte = 0;
            }
            else
            {
                rabattSpalte = 1;
            }
     
            for (int zeile = 0; zeile < 4; zeile++)
            {
                preise[zeile][0] = nettoPreis*(1-rabatt[zeile][rabattSpalte]/100);
                preise[zeile][1] = preise[zeile][0]*0.19;
                preise[zeile][2] = preise[zeile][0]+preise[zeile][1];
            }
     
 
            System.out.println("Netto-Verkaufswert: " + nettoPreis + "€");
            System.out.println();
            System.out.println("\t\t\t\t"+"Reduzierter Verkaufswert" + "\t\t" + "MwSt." + "\t\t" + "Brutto-Verkaufswert");
     
            System.out.println("Barzahlung: \t\t\t\t" + preise[0][0] + "\t\t\t\t" + preise [0][1] + "\t\t\t" + preise [0][2] + "\t\t");
            System.out.println("Zahlung in 14 Tagen: \t\t\t" + preise[1][0] + "\t\t\t\t" + preise[1][1] + "\t\t\t" + preise[1][2] + "\t\t");
            System.out.println("Zahlung in 4 Wochen: \t\t\t" + preise[2][0] + "\t\t\t\t" + preise[2][1] + "\t\t\t" + preise[2][2] + "\t\t");
            System.out.println("Zahlung nach 4 Wochen: \t\t\t" + preise[3][0] + "\t\t\t\t" + preise[3][1] + "\t\t\t" + preise[3][2] + "\t\t");
        }while (abbruch != false);
    }
}
Allerdings funktioniert die Ausgabe bzw. Berechnung noch nicht richtig und ich erhalte in der Tabelle immer die selben Werte. Liegt es an der Art und Weise wie ich die Array-Werte versuche auszugeben? Edit: Das Problem liegt wohl an der Zeile
Java:
preise[zeile][0] = nettoPreis*(1-(rabatt[zeile][rabattSpalte]/100));

Edit2: Fehler gefunden
Nachdem ich das Array int[][] rabatt in double[][] rabatt geändert habe, funktioniert nun alles. Das Problem war wohl, dass in der ersten Berechnungszeile "preise[zeile][0]" der int-Wert vom rabatt-Array nicht mit den doublen-Werten von preise harmoniert hat. Sehe ich das so richtig?
 
Zuletzt bearbeitet:

Neue Themen


Oben