/** This class performs several simple traffic simulations. It assumes separate TrafficLight and Vehicle classes, and maintains statistics about traffic counts and average waiting time */ import java.util.Random; public class A12 { /** Prints values of traffic counts and average waiting time that have been maintained by an A12Simulator @param sim the simulator */ public static void printResults(A12Simulator sim) { System.out.println("The total amount of N-S traffic was " + sim.getNSVehicleCount() + " vehicles"); System.out.println("The total amount of E-W traffic was " + sim.getEWVehicleCount() + " vehicles"); System.out.println("The total amount of traffic was " + sim.getVehicleCount() + " vehicles"); System.out.println("The average waiting time for N-S traffic was " + sim.computeAverageNSWaitingTime() + " seconds"); System.out.println("The average waiting time for E-W traffic was " + sim.computeAverageEWWaitingTime() + " seconds"); System.out.println("The average overall waiting time was " + sim.computeAverageWaitingTime() + " seconds"); } /** Performs several brief simulations using A12Simulator objects. @param args is ignored */ public static void main(String[] args) { A12Simulator sim = new A12Simulator(40, 50, 0.08, 0.10, 9); sim.simulate(1800); printResults(sim); System.out.println(); sim = new A12Simulator(40, 50, 0.08, 0.10, 9); sim.simulate(1800); printResults(sim); System.out.println(); sim = new A12Simulator(50, 40, 0.08, 0.10, 9); sim.simulate(1800); printResults(sim); System.out.println(); sim = new A12Simulator(50, 40, 0.08, 0.10, 99); sim.simulate(1800); printResults(sim); System.out.println(); sim = new A12Simulator(50, 40, 0.08, 0.10, 99); sim.simulate(1835); printResults(sim); } }