static void Main(string[] args) { double numHours = 0.5; double timeToAdd = 0.0; double amountCharged = 0.0; bool validMeterTypeEntered = false; bool validTimeEntered = false; string welcomeMessage = "Please enter the type of parking meter in hours. Valid options are .5, 1, 2, 3, and 5"; Console.WriteLine(DateTime.Now.DayOfWeek); Console.WriteLine(welcomeMessage); while (!validMeterTypeEntered) { try { numHours = Double.Parse(Console.ReadLine()); validMeterTypeEntered = true; } catch (FormatException e) { Console.WriteLine("ERROR: Your input was not in the correct format. Please try again\n"); Console.WriteLine(welcomeMessage); } } // Create a generic parking meter based on the user's scenario. Default to half hour parking meter if no input. ParkingMeter meter = new ParkingMeter(numHours); /** * Ask the user how much time they want. * ASSUMPTION: Since problem description did not explicitly state time intervals, will assume 30 minute intervals for simplicity. */ meter.printAddTimePrompt(); // Handle naively, knowing user might add a bad value. String input = Console.ReadLine(); while (!validTimeEntered) { try { timeToAdd = Double.Parse(input); if (timeToAdd > numHours) { Console.WriteLine("You requested more time than is allowed. Defaulting to maximum time."); timeToAdd = numHours * 60; } validTimeEntered = true; } catch (Exception e) { if (input.Equals("max")) { timeToAdd = numHours * 60; validTimeEntered = true; } else { meter.printErrorInAddingTime(); meter.printAddTimePrompt(); } } } /** * Convert the number of minutes to hours charged. * Round to nearest penny. */ amountCharged = Math.Round((((meter.pricePerHour * timeToAdd) / 60) ), 2); DateTime endTime = DateTime.Now.AddMinutes(timeToAdd); if (!meter.isValidTime(endTime.Hour)) { Console.WriteLine("Sorry, this time is outside of working hours..."); Console.WriteLine("Transaction cancelled."); } else { meter.ExpirationTime = endTime; Console.WriteLine("Printing ticket..."); Console.WriteLine("Expiration time: " + meter.ExpirationTime); Console.WriteLine("Amount charged: $" + amountCharged); Console.WriteLine("Minutes purchased: " + timeToAdd); } }