Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 von flashpixx
Code-Tags eingefügt

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.