Hallo,
entweder bin ich zu dumm, die Forensuche zu verwenden oder es gibt wirklich noch keinen passenden Thread. Ich soll einen Fahrkartenautomaten schreiben und natürlich gehört dazu auch eine Rueckgeldausgabe mit möglichst wenig Muenzen/Scheinen. Meine Methode dazu seht ihr unten. Es wird zwar der richtige Betrag zurückgegeben, aber besonders im unteren Bereich ist es buggy und ich weiß nicht warum.
Wenn zum Beispiel 29,5€ zurückgegeben werden sollen, gibt er:
1x20,1x5, 1x2, 1x1 und dann 2x0.50 (statt ein weiteres mal 1) und 5x0.1(statt einmal 0.50).
(Bei dem Automaten gibt es nur 50, 20, 10, 5, 2, 1, 0.5 und 0.1€)
Vielen Dank für Hinweise
entweder bin ich zu dumm, die Forensuche zu verwenden oder es gibt wirklich noch keinen passenden Thread. Ich soll einen Fahrkartenautomaten schreiben und natürlich gehört dazu auch eine Rueckgeldausgabe mit möglichst wenig Muenzen/Scheinen. Meine Methode dazu seht ihr unten. Es wird zwar der richtige Betrag zurückgegeben, aber besonders im unteren Bereich ist es buggy und ich weiß nicht warum.
Wenn zum Beispiel 29,5€ zurückgegeben werden sollen, gibt er:
1x20,1x5, 1x2, 1x1 und dann 2x0.50 (statt ein weiteres mal 1) und 5x0.1(statt einmal 0.50).
(Bei dem Automaten gibt es nur 50, 20, 10, 5, 2, 1, 0.5 und 0.1€)
Java:
public void gebeRueckgeld(double zurueckzugebendesRueckgeld)
{
zurueckzugebendesRueckgeld *= -1;
while(zurueckzugebendesRueckgeld > 0.1)
{
if(zurueckzugebendesRueckgeld >= 50.0)
{
rueckgeldArray[0] += 1;
zurueckzugebendesRueckgeld -= 50.0;
}
if(zurueckzugebendesRueckgeld >= 20.0)
{
rueckgeldArray[1] += 1;
zurueckzugebendesRueckgeld -= 20.0;
}
if(zurueckzugebendesRueckgeld >= 10.0)
{
rueckgeldArray[2] += 1;
zurueckzugebendesRueckgeld -= 10.0;
}
if(zurueckzugebendesRueckgeld >= 5.0)
{
rueckgeldArray[3] += 1;
zurueckzugebendesRueckgeld -= 5.0;
}
if(zurueckzugebendesRueckgeld >= 2.0)
{
rueckgeldArray[4] += 1;
zurueckzugebendesRueckgeld -= 2.0;
}
if(zurueckzugebendesRueckgeld >= 1.0)
{
rueckgeldArray[5 ] += 1;
zurueckzugebendesRueckgeld -= 1.0;
}
if(zurueckzugebendesRueckgeld >= 0.50)
{
rueckgeldArray[6] += 1;
zurueckzugebendesRueckgeld -= 0.50;
}
if(zurueckzugebendesRueckgeld >= 0.10)
{
rueckgeldArray[7] += 1;
zurueckzugebendesRueckgeld -= 0.10;
}
}
Vielen Dank für Hinweise
Zuletzt bearbeitet: