Computer Science 202
Introduction to Programming
Fall 2013, The College of Saint Rose
MassPikeTolls BlueJ Project
Click here to download a BlueJ project for MassPikeTolls.
MassPikeTolls Source Code
The Java source code for MassPikeTolls is below. Click on a file name to download it.
/* * Example MassPikeTolls: program to determine whether a vehicle will * pay a toll on a given segment of the ticket-controlled portion of * the Massachusetts Turnpike. Before the "Big Dig", there were tolls * for all vehicles along the entire road, but western Mass. was exempted * from car tolls. The ticket-controlled portion extends from Exit 1 in * Stockbridge to Exit 15 at I-95 outside of Boston. Trucks always pay * tolls, but cars pay tolls only on the part between exits 6 and 15. * Given an entry interchange, and exit interchange, and a vehicle type * (motorcycle, car, or truck), determine whether there will be a toll * on the entire distance travelled, part of the distance travelled, or * if there will be no toll. * * Note: we pretend interchange 10A for MA 146 does not exist, so we can * use int values to hold interchange numbers. * * Note 2: we also ignore the fact that the Mass Pike reinstated car * tolls on the western portion in 2013. Oh well. * * Jim Teresco, The College of Saint Rose, CSC 202, Fall 2012 * Updated for Fall 2013 * * $Id: MassPikeTolls.java 2228 2013-10-24 05:42:15Z terescoj $ */ import javax.swing.JOptionPane; public class MassPikeTolls { public static void main(String[] args) { // we start out by gathering the information we need as inputs String input; // get the entry interchange input = JOptionPane.showInputDialog("At what interchange did you enter the Mass Pike (1-15)?"); int entryInterchange = Integer.parseInt(input); // make sure it's valid if (entryInterchange < 1 || entryInterchange > 15) { JOptionPane.showMessageDialog(null, "Entry interchange must be in the range 1-15!", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } // get the exit interchange input = JOptionPane.showInputDialog("At what interchange did you exit the Mass Pike (1-15)?"); int exitInterchange = Integer.parseInt(input); // make sure this one is valid as well if (exitInterchange < 1 || exitInterchange > 15) { JOptionPane.showMessageDialog(null, "Exit interchange must be in the range 1-15!", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } // one more check on the input: no one should be allowed to enter // and exit at the same interchange if (entryInterchange == exitInterchange) { JOptionPane.showMessageDialog(null, "Entry interchange and exit interchange must be different\n(No U Turns!)", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } input = JOptionPane.showInputDialog("Were you in a motorcycle, a car, or a truck?"); boolean isTruck = false; // now make sure we got a valid response and set a boolean variable to true // only if it was a truck. if (input.equals("truck")) { isTruck = true; } else if (input.equals("car")) { isTruck = false; } else if (input.equals("motorcycle")) { isTruck = false; } else { JOptionPane.showMessageDialog(null, "Invalid vehicle type!", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); } // now we report on whether there is a toll based on this input if (isTruck || ((entryInterchange >= 6) && (exitInterchange >= 6))) { JOptionPane.showMessageDialog(null, "You paid a toll on the entire trip..."); } else if ((entryInterchange <= 6) && (exitInterchange <= 6)) { JOptionPane.showMessageDialog(null, "No tolls for you in western Mass!"); } else { JOptionPane.showMessageDialog(null, "You paid a toll, but only for travels east of Exit 6"); } } }