/* * Redmond7wrong.java * * Created on March 14, 2002, 11:35 PM */ /** * * @author mike * @version */ public class Redmond7wrong { public static final int MINPERHOUR = 60; /** Creates new Redmond7wrong */ public Redmond7wrong() { } /** * @param args the command line arguments */ public static void main (String args[]) { int numCars; int cnt; double minutes; double miles; double currMPH; double currFine; int speedLimit; double totalMPH = 0.0; int numSpeeding = 0; double totalFines = 0.0; double percSpeeding; double aveFinePerSpeeding; double aveFinePerCar; double aveMPH; /* get how many drivers to process */ System.out.println("How many cars will be logged in this batch? "); numCars = SavitchIn.readLineInt(); /* ensure valid number of drivers */ while (numCars <= 0) { System.out.println("Please enter a positive number of cars"); numCars = SavitchIn.readLineInt(); } /*************************************************/ /* loop through user specified number of cars */ /* getting distance and time, calculating speed, */ /* fine, and displaying bill if appropriate. */ /* and keep track of summary stats */ /*************************************************/ for (cnt = 0;cnt <= numCars; cnt++) { //7 int mph; /* get speed on Garden State Parkway and validate */ System.out.println("Car " + (cnt + 1)); System.out.println("Speed on Garden State Parkway (in miles per hour): "); mph = SavitchIn.readLineInt(); while (mph <= 0) { System.out.println("Please enter a positive speed"); mph = SavitchIn.readLineInt(); } /* get time on turnpike and validate */ /* System.out.println("Car " + (cnt + 1)); System.out.println("Time on Garden State Parkway (in minutes): "); minutes = SavitchIn.readLineDouble(); while (minutes <= 0) { System.out.println("Please enter a positive number of minutes"); minutes = SavitchIn.readLineDouble(); } **/ /* get miles traveled on turnpike and validate */ /* System.out.println("Miles on Garden State Parkway: "); miles = SavitchIn.readLineDouble(); while (miles <= 0) { System.out.println("Please enter a positive number of miles"); miles = SavitchIn.readLineDouble(); } **/ /* get speed limit on turnpike and validate */ System.out.println("Speed Limit on Garden State Parkway: "); speedLimit = SavitchIn.readLineInt(); while ((speedLimit < 35) || (speedLimit > 65)) { System.out.println("Please enter a speed limit between 35 and 65"); speedLimit = SavitchIn.readLineInt(); } /* mph is miles per minute times 60 minutes in an hour */ //mph = (miles / minutes) * MINPERHOUR; totalMPH += mph; System.out.println("Speed: " + mph); /* calculate drivers fine */ double overLimit; double fine; /* handle not speeding */ if (mph <= speedLimit) { fine = 0; overLimit = 0; } else { /* determine how much over speed limit */ overLimit = mph - speedLimit; } /* determine if low speeding - 5 mph or less under speed limit */ if ((overLimit > 0) && (overLimit <= 5)) { /* low speeding */ fine = 20; } /* determine if between 5 and 10 mph above limit */ else if ((overLimit >= 5)&&(overLimit <= 10)) { fine = (20 + (2 * overLimit)); // fine is doubled if speedlimit is 65 if (speedLimit == 65) { fine = fine * 2; } } /* determine if between 10 and 20 mph above limit */ else if ((overLimit >= 10) && (overLimit <= 20)) { fine = (20 + (4 * overLimit)); // fine is doubled if speedlimit is 65 if (speedLimit == 65) { fine = fine * 2; } } else { /* more than 20 mph over speed limit */ fine = (50 + (5 * overLimit)); } /* determine if driver is to be fined */ if (fine > 0.0001) { /* driver is to be fined - print bill, * update count of speeders, and asccumulator for fines */ System.out.println(" "); System.out.println("===========================< CUT HERE >==============================="); System.out.println(" Bill"); System.out.println(" "); //System.out.println(" You traveled " + miles + " miles in " + minutes ); //System.out.println(" - an average speed of " + mph + " miles per hour"); System.out.println(" You traveled at a speed of " + mph + " miles per hour"); System.out.println(" This compares to a speed limit of " + speedLimit); System.out.println(" The fine of " + fine + " has been charged to your account "); System.out.println(" "); System.out.println("===========================< CUT HERE >=============================== "); System.out.println(" "); numSpeeding++; totalFines += fine; } } /* end for loop */ /* determine percent of drivers speeding */ /* Take ratio and multiply by 100 to get percent */ percSpeeding = ((int)numSpeeding / numCars) * 100.0; /* calculate mean fine per speeding driver */ /* avoid divide by 0 */ if (numSpeeding > 0) { /* there are speeders - calculate average */ aveFinePerSpeeding = totalFines / numSpeeding; } else { /* no speeders */ /* average is not really 0, but must display something */ aveFinePerSpeeding = 0; } /* calculate average fine per car (all cars, speeding or not) */ aveFinePerCar = totalFines / numCars; /* calculate average speed per car */ aveMPH = totalMPH / numCars; /* final report for batch of cars */ System.out.println(" "); System.out.println(" Final Report "); System.out.println(" ------------ "); System.out.println(" "); System.out.println(" In a batch of " + numCars + " cars " + numSpeeding + " were speeding "); System.out.println(" "); System.out.println(" This represents " + percSpeeding + " percent of cars "); System.out.println(" "); System.out.println(" The total fines charged were " + totalFines); System.out.println(" This represents an average per speeding car of " + aveFinePerSpeeding); System.out.println(" OR an average for all cars of " + aveFinePerCar); System.out.println(" The average speed of all cars was " + aveMPH + " miles per hour "); System.out.println(" "); System.out.println("Goodbye "); } }