Java nur bestimmte Werte eingeben mithilfe von Scanner (double, Münzeinwurf?
Hey,
ich habe ein Problem und zwar weiß ich nicht, wie man einen Automaten, welcher nur Münzen als Eingabe hat programmieren soll. Also nur die Eingaben 0,2 € 1 € usw akzeptieren soll, wenn man dazu aufgefordert wird, Münzen einzuwerfen.
Kann mir jemand helfen?
3 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren
Hier mal ein Beispiel. Die Methode "getCoinCents()" fragt so lange nach, bis der Benutzer einen gültigen Wert eingibt.
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
public class FilteredInput {
private static Scanner scanner = new Scanner(System.in);
// Testroutine. Zeigt nach jeder Eingabe den Kontostand an, bis du das Programm beendest.
public static void main(String[] args) {
int kontoCents = 0;
while (true) {
kontoCents += getCoinCents();
System.out.printf("Ihr aktueller Kontostand beträgt %.2f €.%n", kontoCents/100.0);
}
}
private static int getCoinCents() {
int cents = -1;
System.out.println("Bitte Münze einwerfen.");
while (cents < 0) {
// Prüfen, ob überhaupt eine Zahl eingegeben wurde
try {
cents = (int) (scanner.nextDouble()*100.0);
// Prüfen, ob die Zahl eine gültige Münze ist (wird in Cent gespeichert, um Rundungsfehler zu vermeiden)
if (!Arrays.asList(0,1,2,5,10,20,50,100,200).contains(cents)) {
System.out.println("Bitte einen der folgenden Werte eingeben: 0,00 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00");
cents = -1;
}
} catch (InputMismatchException e) {
System.out.println("Bitte einen der folgenden Werte eingeben: 0,00 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00");
}
}
return cents;
}
}
Du könntest für die unterschiedlichen Münztypen eine Enumeration anbieten. Hier könntest Du auch direkt die Wertigkeiten hinterlegen und in der UI eben die Auswahl der Enumerationsmember gestatten.
Machn buffered Reader und mittels Switch ob die Eingabe zulässig war.
Woher ich das weiß:Studium / Ausbildung – info studium