schleifen-Problem



  • habe ein Problem mit der Schleifensetzung und zwar wollte ich eine prüfung
    falls der eingegebene Betrag höherist als 2€ dann soll er mekern und maximal 2 Euro berechnen
    könnt ihr mir das zeigen wie das geht.

    hier ist mein code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace TicketSystem
    {
        class Program
        {
           static void Main(string[] args)
           {
               double betrag;
               double dauer=50, viertelstunde=15; 
               double Parkzeit;
               int eingabe=0;
    
               do
               {
                   Console.Clear();
                   Console.WriteLine("Parscheinsystem"); //--ausgabe der information
                   Console.WriteLine("------------------------------------"); //--ausgabe der information
                   Console.WriteLine(); //--ausgabe der information
                   Console.WriteLine(); //--ausgabe der information
                   Console.WriteLine("50 cent pro viertel Stunde."); //--ausgabe der information
                   Console.WriteLine("maximale dauer 1Std."); //--ausgabe der information
                   Console.WriteLine("geben sie einen Betrag ein Max. 2 Euro"); //--ausgabe der information
    
                   string userInput = Console.ReadLine();
    
                   double ergebnis;
    
                   if (double.TryParse(userInput, out ergebnis))
                   {
    
                       Console.Clear();
                       Console.WriteLine("Gebe deinen Betrag ein");
                       betrag = Convert.ToDouble(Console.ReadLine()); //--eingabe des betrags
                       Parkzeit = (viertelstunde * (betrag * 100)) / dauer;
                       Console.WriteLine("Sie haben eine Parkzeit von {0},{1}", Parkzeit, " Minuten");
                       DateTime start = DateTime.Now;
    
                       DateTime end = start.AddMinutes(Parkzeit);
    
                       Console.WriteLine("-------------------------------------------");
                       Console.WriteLine("Ihr Parkschein                             ");
                       Console.WriteLine("Sie Stehen seit {0}                        ", start);
                       Console.WriteLine("Ihre Parkdauer ist {0}                     ", Parkzeit);
                       Console.WriteLine("Ihre Parkdauer endet um  {0}               ", end);
                       Console.WriteLine("-------------------------------------------");
    
                       Console.WriteLine("möchten sie noch einen Parkschein dafür drücke 0");
                       eingabe = Convert.ToInt16(Console.ReadLine());
    
                   }
                   else
                   {
                       Console.WriteLine("Falsche Zahl eingegeben um neu auszuwählen drücke 0");
                       // falscher Fall
                   }
    
               } while (eingabe == 0);
    
        }
    
        }
    }
    


  • if(Betrag > 2)
      mecker();
    else
      tuwas();
    


  • habe es soweit ok aber etz ist noch ein problem aufgetreten.
    wenn man als "userinput" ein char eingibt dann tritt ja der (if)-fall ein soweit ist das
    schon in ordnung wenn als "userinput" double eingegeben wird und der betrag zu hoch ist
    dann tritt der (while)-fall ein und er wartet bis der "betrag" kleiner wird.

    das geht noch doch jetzt zur hauptfrage:
    wie kann man die fehlermeldung beheben die kommt wenn in der while-schleife ein char
    anstatt eines double.

    string userInput = Console.ReadLine();
    	double ergebnis;
    
                   if (double.TryParse(userInput, out ergebnis))
                   {
    
                       Console.Clear();
    
                       Console.WriteLine("Gebe deinen Betrag ein");
                       betrag = Convert.ToDouble(Console.ReadLine()); //--eingabe des betrags
    
                       while (betrag > 2)
                       {  
    
                              Console.WriteLine("Zuviel Geld eingegeben maximal 2€");
                              betrag = Convert.ToDouble(Console.ReadLine());
    
                       }
    

Anmelden zum Antworten