I have the following program so far:
using System;
namespace ParkingTicket
{
class Program
{
static void Main()
{
int speed;
int yrInSchool;
double fine;
char choice = ' ';
do
{
Console.Clear();
speed = GetSpeed();
if (speed <= 15)
Console.WriteLine("No speeding fine to pay.");
else
{
yrInSchool = GetYrInSchool();
fine = CalculateFine(speed, yrInSchool);
DisplayFine(fine);
}
choice = GetUserChoice();
} while (choice != 'Q' && choice != 'q');
}
static int GetSpeed()
{
int speed;
string userInput;
try
{
Console.Write("Please enter the speed you were traveling: ");
userInput = Console.ReadLine();
speed = Convert.ToInt32(userInput);
}
catch
{
Console.WriteLine("\a\n INVALID - PLEASE TRY AGAIN");
Console.Write("Please press enter to continue....");
userInput = Console.ReadLine();
speed = GetSpeed(); // this is the recursion - calling myself
}
return speed;
// code this method
}
static int GetYrInSchool()
{
string userEntry;
int year;
/*************************************************************
* modify this method to validate the year using a Try/Catch
*************************************************************/
Console.WriteLine("\nClassifications");
Console.WriteLine("\tFreshman (enter 1)");
Console.WriteLine("\tSophomore (enter 2)");
Console.WriteLine("\tJunior (enter 3)");
Console.WriteLine("\tSenior (enter 4)");
try
{
Console.Write("Enter choice: ");
userEntry = Console.ReadLine();
year = Convert.ToInt32(userEntry);
}
catch
{
Console.WriteLine("\a\n INVALID - PLEASE TRY AGAIN");
Console.Write("Please press enter to continue....");
userEntry = Console.ReadLine();
year = GetYrInSchool(); // this is the recursion - calling myself
}
return year;
}
static double CalculateFine(int speed, int year)
{
const double COST_PER_5_OVER = 87.50;
const int SPEED_LIMIT = 15;
const double INITIAL_FEE = 75.00;
double fine = 0;
if (((year == 1) && (speed >= 15) || (speed <= 19)))
{
fine = INITIAL_FEE - 50.00;
}
else if (((year == 1) && (speed >= 20) || (speed >= 24)))
{
fine += (INITIAL_FEE - 50.00) + COST_PER_5_OVER;
}
else if (((year == 1) && (speed >= 25) || (speed <= 29)))
{
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 2);
}
else if (((year == 1) && (speed >= 30) || (speed <= 34)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 3);
else if (((year == 1) && (speed >= 35) || (speed <= 39)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 4);
else if (((year == 1) && (speed >= 40) || (speed <= 44)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 5);
else if (((year == 1) && (speed >= 45) || (speed <= 49)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 6);
if (((year == 1) && (speed >= 50) || (speed <= 54)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 7);
if (((year == 1) && (speed >= 55) || (speed <= 59)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 8);
if (((year == 1) && (speed >= 60) || (speed <= 64)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 9);
if (((year == 1) && (speed >= 65) || (speed <= 69)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 10);
if (((year == 1) && (speed >= 70) || (speed <= 74)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 11);
if (((year == 1) && (speed >= 75) || (speed <= 79)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 12);
if (((year == 1) && (speed >= 80) || (speed <= 84)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 13);
if (((year == 1) && (speed >= 85) || (speed <= 89)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 14);
if (((year == 1) && (speed >= 90) || (speed <= 94)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 15);
if (((year == 1) && (speed >= 95) || (speed <= 99)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 16);
if (((year == 1) && (speed >= 100) || (speed <= 104)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 17);
if (((year == 1) && (speed >= 105) || (speed <= 109)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 18);
if (((year == 1) && (speed >= 110) || (speed <= 114)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 19);
if (((year == 1) && (speed >= 115) || (speed <= 119)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 20);
if (((year == 1) && (speed >= 120) || (speed <= 124)))
fine = (INITIAL_FEE - 50.00) + (COST_PER_5_OVER * 21);
else if (((year == 2) && (speed >= 16) || (speed <= 19)))
fine = INITIAL_FEE;
if (((year == 2) && (speed >= 20) || (speed <= 24)))
fine = INITIAL_FEE + (COST_PER_5_OVER);
if (((year == 2) && (speed >= 25) || (speed <= 29)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 2);
if (((year == 2) && (speed >= 30) || (speed <= 34)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 3);
if (((year == 2) && (speed >= 35) || (speed <= 39)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 3);
if (((year == 2) && (speed >= 40) || (speed <= 44)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 4);
if (((year == 2) && (speed >= 45) || (speed <= 49)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 5);
if (((year == 2) && (speed >= 50) || (speed <= 54)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 6);
if (((year == 2) && (speed >= 55) || (speed <= 59)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 7);
if (((year == 2) && (speed >= 60) || (speed <= 64)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 8);
if (((year == 2) && (speed >= 65) || (speed <= 69)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 9);
if (((year == 2) && (speed >= 70) || (speed <= 74)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 10);
if (((year == 2) && (speed >= 75) || (speed <= 79)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 11);
if (((year == 2) && (speed >= 80) || (speed <= 84)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 12);
if (((year == 2) && (speed >= 85) || (speed <= 89)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 13);
if (((year == 2) && (speed >= 90) || (speed <= 94)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 14);
if (((year == 2) && (speed >= 95) || (speed <= 99)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 15);
if (((year == 2) && (speed >= 100) || (speed <= 104)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 16);
if (((year == 2) && (speed >= 105) || (speed <= 109)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 17);
if (((year == 2) && (speed >= 110) || (speed <= 114)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 18);
if (((year == 2) && (speed >= 115) || (speed <= 119)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 19);
if (((year == 2) && (speed >= 120) || (speed <= 124)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 20);
if (((year == 2) && (speed >= 125) || (speed <= 129)))
fine = INITIAL_FEE + (COST_PER_5_OVER * 21);
else if (((year == 3) && (speed >= 16) || (speed <= 19)))
fine = INITIAL_FEE + 50.00;
if (((year == 3) && (speed >= 20) || (speed <= 24)))
fine = INITIAL_FEE + 50.00 + (COST_PER_5_OVER);
if (((year == 3) && (speed >= 25) || (speed <= 29)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 2);
if (((year == 3) && (speed >= 30) || (speed <= 34)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 3);
if (((year == 3) && (speed >= 35) || (speed <= 39)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 4);
if (((year == 3) && (speed >= 40) || (speed <= 44)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 5);
if (((year == 3) && (speed >= 45) || (speed <= 49)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 6);
if (((year == 3) && (speed >= 50) || (speed <= 54)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 7);
if (((year == 3) && (speed >= 55) || (speed <= 59)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 8);
if (((year == 3) && (speed >= 60) || (speed <= 64)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 9);
if (((year == 3) && (speed >= 65) || (speed <= 69)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 10);
if (((year == 3) && (speed >= 70) || (speed <= 74)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 11);
if (((year == 3) && (speed >= 75) || (speed <= 79)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 12);
if (((year == 3) && (speed >= 80) || (speed <= 84)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 13);
if (((year == 3) && (speed >= 85) || (speed <= 89)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 14);
if (((year == 3) && (speed >= 90) || (speed <= 94)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 15);
if (((year == 3) && (speed >= 95) || (speed <= 99)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 16);
if (((year == 3) && (speed >= 100) || (speed <= 104)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 17);
if (((year == 3) && (speed >= 105) || (speed <= 109)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 18);
if (((year == 3) && (speed >= 110) || (speed <= 114)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 19);
if (((year == 3) && (speed >= 115) || (speed <= 119)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 20);
if (((year == 3) && (speed >= 120) || (speed <= 124)))
fine = (INITIAL_FEE + 50.00) + (COST_PER_5_OVER * 21);
else if (((year == 4) && (speed >= 16) || (speed <= 19)))
fine = INITIAL_FEE + 100.00;
if (((year == 4) && (speed >= 20) || (speed <= 24)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER);
if (((year == 4) && (speed >= 25) || (speed <= 29)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 2);
if (((year == 4) && (speed >= 30) || (speed <= 34)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 3);
if (((year == 4) && (speed >= 35) || (speed <= 39)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 4);
if (((year == 4) && (speed >= 40) || (speed <= 44)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 5);
if (((year == 4) && (speed >= 45) || (speed <= 49)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 6);
if (((year == 4) && (speed >= 100) || (speed <= 54)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 7);
if (((year == 4) && (speed >= 55) || (speed <= 59)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 8);
if (((year == 4) && (speed >= 60) || (speed <= 64)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 9);
if (((year == 4) && (speed >= 65) || (speed <= 69)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 10);
if (((year == 4) && (speed >= 70) || (speed <= 74)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 11);
if (((year == 4) && (speed >= 75) || (speed <= 79)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 12);
if (((year == 4) && (speed >= 80) || (speed <= 84)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 13);
if (((year == 4) && (speed >= 85) || (speed <= 89)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 14);
if (((year == 4) && (speed >= 90) || (speed <= 94)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 15);
if (((year == 4) && (speed >= 95) || (speed <= 99)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 16);
if (((year == 4) && (speed >= 100) || (speed <= 104)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER);
if (((year == 4) && (speed >= 105) || (speed <= 109)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 18);
if (((year == 4) && (speed >= 110) || (speed <= 114)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 19);
if (((year == 4) && (speed >= 115) || (speed <= 119)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 20);
if (((year == 4) && (speed >= 120) || (speed <= 124)))
fine = (INITIAL_FEE + 100.00) + (COST_PER_5_OVER * 21);
// finish coding this method
return fine;
}
static void DisplayFine(double fine)
{
Console.WriteLine("Fine: {0:C}", fine);
}
static char GetUserChoice()
{
Console.Write
("\nPress \"C\" to [C]ontinue or \"Q\" to [Q]uit: ");
string userEntry = Console.ReadLine();
char choice = Convert.ToChar(userEntry);
Console.WriteLine("------------------------------------");
return choice;
}
}
}
I have a whole list of these statements going up to 125 mph and for different years: 1 through 4. I'm trying to make a program that takes input for speed of a vehicle, then gives appropriate ticket information according to speed.
The speed limit is 15 mph. For every 5 miles per hour over speed limit, $87.50 is added towards the total. Year 2 is sophomore so a $50.00 discount applies. Yet for like year 4, a $100.00 fee is added towards the total. I am getting same total for each speed. Why?