we are doing a small project in school and we have the following problem. A user inputs an amount of how much a busticket costs, in this case - 2.10. The number of tickets has to also be inputted in this case 1. Afterwards the user inputs how much money he is going to give betwee 50c and 2Euro. I input 2 euro twice. The Change is then calculated. However when inputting these particular numbers instead of getting the anser 1.90, I get 1.85.
import java.util.Scanner;
class Fahrkartenautomat {
public static void main(String[] args) {
Scanner tastatur = new Scanner(System.in);
double amountToPay;
double depositetTotalAmount;
double insertionofCoins;
double Change;
double stillToPay;
double ticketPrice;
int numberOfTickets;
// Geldbetrag eingeben
System.out.print("Ticketpreis (Euro): ");
ticketPrice = tastatur.nextDouble();
System.out.print("Anzahl der Tickets: ");
numberOfTickets = tastatur.nextInt();
amountToPay = ticketPrice * numberOfTickets;
// Geldeinwurf
depositedTotalAmount = 0.0;
stillToPay = 0.0;
while (depositedTotalAmount < amountToPay) {
stillToPay = amountToPay - depositedTotalAmount;
System.out.print("Noch zu zahlen: ");
System.out.printf("%.2f", nochZuZahlen);
System.out.println(" Euro");
System.out.print("Eingabe (mind. 5 Cent, höchstens 2 Euro): ");
insertionOfCoins = tastatur.nextDouble();
depositedTotalAmount = depositedTotalAmount + insertionOfCoins;
}
// Fahrscheinausgabe
System.out.println("\nFahrschein wird ausgegeben");
for (int i = 0; i < 8; i++) {
System.out.print("=");
try {
Thread.sleep(200);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("\n\n");
Change = depositedTotalAmount - amountToPay;
if (Change > 0.0) {
System.out.print("Der Rückgabebetrag in Höhe von ");
System.out.printf("%.2f", Change);
System.out.println(" Euro");
System.out.println("wird in folgenden Münzen ausgezahlt:");
while (Change >= 2.00) { // 2-Euro-Münzen
System.out.println("2 Euro");
Change = Change - 2.00;
}
while (Change >= 1.00) { // 1-Euro-Münzen
System.out.println("1 Euro");
Change = Change - 1.00;
}
while (rueckgabebetrag >= 0.50) { // 50-Cent-Münzen
System.out.println("50 Cent");
Change = Change - 0.50;
}
while (Change >= 0.20) { // 20-Cent-Münzen
System.out.println("20 Cent");
Change = Change - 0.20;
}
while (rueckgabebetrag >= 0.10) { // 10-Cent-Münzen
System.out.println("10 Cent");
Change = Change - 0.10;
}
while (Change >= 0.05) { // 5-Cent-Münzen
System.out.println("5 Cent");
Change = Change - 0.05;
}
}
System.out.println("\nVergessen Sie nicht, den Fahrschein\n" + "vor Fahrtantritt entwerten zu lassen!\n"
+ "Wir wünschen Ihnen eine gute Fahrt.");
tastatur.close();
}
}