Complete these tasks to reinforce what you learned in this module.
Die folgende Methode berechnet einen Mengenrabatt. Sie funktioniert — aber niemand kann sie lesen:
``csharp
public static decimal Calc(decimal d, int t)
{
if (t > 5) return d * 0.9m;
if (t > 2) return d * 0.95m;
return d;
}
Schreibe sie sauber neu:
- Die Methode heisst BerechneRabattpreis, die Parameter nettoBetrag und anzahlArtikel.
- Die vier Literale bekommen Namen als private const: die beiden Mengenschwellen und die beiden Faktoren.
- Neu: Eine Anzahl kleiner als 1 ist keine gültige Bestellung und wirft eine ArgumentOutOfRangeException.
Main` rechnet 100.00 für 1, 3 und 6 Artikel durch und versucht danach 0 Artikel.
preis.ToString("0.00", CultureInfo.InvariantCulture) — sonst entscheidet die Kultur des Servers über Punkt oder Komma. Die Prüfung auf anzahlArtikel < 1 gehört an den Anfang der Methode, vor jede Rechnung.using System;
using System.Globalization;
public static class Rabatt
{
// TODO: vier Konstanten statt der Literale 5, 2, 0.9 und 0.95
public static decimal BerechneRabattpreis(decimal nettoBetrag, int anzahlArtikel)
{
// TODO: anzahlArtikel < 1 -> ArgumentOutOfRangeException
// TODO: die beiden Mengenstufen, mit benannten Konstanten
return nettoBetrag;
}
}
class Program
{
static string F(decimal betrag)
{
return betrag.ToString("0.00", CultureInfo.InvariantCulture);
}
static void Main()
{
// TODO: 100.00 für 1, 3 und 6 Artikel ausgeben, Format "{n} Artikel: {preis}"
// TODO: 0 Artikel versuchen und im catch "Ungültige Anzahl" ausgeben
}
}