PrinzPii Geschrieben 2. Dezember 2010 Teilen Geschrieben 2. Dezember 2010 (bearbeitet) Hey Leute also ich muss ne Aufgabe programmieren bei der ein Parkautomat simmuliert wird. Es wird eine zufällige Zahl von 1-12 angegebene und man muss dann Geld einschmeißen um die Kosten zu bezahlen. es läuft auch alles wunderbar. Nur am Ende wenn man alles bezahlt wurde bis auf den letzten Euro und man dann mit 20Cent-Münzen,10Cent-Münzen weiterzahlt klappt es nicht die Gebühren sind zwar auf 0, aber er verlangt immer noch, dass man was reinschmeißt. Mit 50Cent-Münzen geht es aber seltsamerweise Also ich bin am Ende meiner Weisheiten ich habe keine Ahnung wie ich das rausbekomme. Kann mir nur vostellen, dass er irgendwo einen Rundungsfehler macht. Bitte um Hilfe hier mein Quellcode : import java.util.Scanner; public class Parken { public static Scanner in; public static void main(String[] argsv) { double dGebuehr, dInput; in = new Scanner(System.in); dGebuehr = Math.random(); dGebuehr = dGebuehr *10; dGebuehr = Math.round(dGebuehr)+2; while(dGebuehr > 0) { System.out.printf("Die Parkgebühren betragen %7.2f\n", dGebuehr); System.out.printf("Bitte Geld einwerfen!\n"); dInput = in.nextDouble(); if(dInput == 1 || dInput ==2) { if(dInput <= dGebuehr) { dGebuehr = dGebuehr - dInput; continue; } else System.out.printf("Zuviel bezahlt!"); } else { if(dInput == 10 || dInput == 20 || dInput == 50) { dInput = dInput/100; if(dInput <= dGebuehr) { dGebuehr = dGebuehr - dInput; continue; } else System.out.printf("Zuviel bezahlt!"); } else { if(dInput == 10 || dInput == 20 || dInput == 50) { dInput = dInput/100; if(dInput <= dGebuehr) { dGebuehr = dGebuehr - dInput; continue; } else System.out.printf("Zuviel bezahlt!"); } else System.out.printf("Falschen Betrag eingeworfen\n"); } } System.out.printf("Die Gebuehren sind bezahlt!"); } } Bearbeitet 2. Dezember 2010 von flashpixx Code-Tags eingefügt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 2. Dezember 2010 Teilen Geschrieben 2. Dezember 2010 Verwende bitte das nächste mal die Code-Tags. Bevor ich jetzt anfange den Code mir im einzelnen anzuschauen: Schau Dir Endlicher Automat ? Wikipedia an, nimm ein Stück Papier und male Dir für Deinen Automaten ein solches Diagramm. Egal was Du machst, Du musst Dich _immer_ in einem definierten Zustand befinden (nach Deiner Beschreibung ist eben genau das das Problem). Wenn Du auf dem Papier einen solchen Automaten hast, dann fängst Du an ihn zu codieren, dafür gibt es für Java fertige Tools in die man nur die Übergänge und Zustände rein setzen muss (z.B. Java Finite State Machine Framework ) oder Du schreibst es eben selbst. Birch das Problem vor allem so weit runter, dass Du für jeden Münzenwert einen Zustand hast. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.