// FILE: Carwash.java
// This program illustrates the use of the carWashSimulate method which uses
// a simple queue to simulate cars waiting at a car wash.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import edu.colorado.simulations.BooleanSource;
import edu.colorado.simulations.Washer;
import edu.colorado.simulations.Averager;
/******************************************************************************
* The CarWash
Java application illustrates the use of
* the carWashSimulate
method.
* The illustration uses the following values:
*
*
*
*
washTime = 240
*
arrivalTime = 0.0025
*
totalTime = 6000
*
Java Source Code for this class:
*
* http://www.cs.colorado.edu/~main/applications/CarWash.java
*
*
* @author Michael Main
* (main@colorado.edu)
*
* @version Feb 10, 2016
******************************************************************************/
public class CarWash
{
/**
* The main method activates carWashSimulate
with the values:
*
*
* @param args
* not used in this implementation
**/
public static void main(String[ ] args)
{
final int WASHTIME = 240;
final double ARRIVALPROB = 0.0025;
final int TOTALTIME = 6000;
carWashSimulate(WASHTIME, ARRIVALPROB, TOTALTIME);
}
/**
* Simulate the running of a car washer for a specified amount of time.
* @param washTime
* the number of seconds required to wash one car
* @param arrivalProb
* the probability of a customer arriving in any second, for example
* 0.1 is 10%
* @param totalTime
* the total number of seconds for the simulation
* Precondition:
*
washTime = 240
*
arrivalTime = 0.0025
*
totalTime = 6000
* washTime
and totalTime
are positive;
* arrivalProb
lies in the range 0 to 1.
* Postcondition:
* The method has simulated a car wash where washTime
is the
* number of seconds needed to wash one car, arrivalProb
is
* the probability of a customer arriving in any second, and
* totalTime
is the total number of seconds for the
* simulation. Before the simulation, the method has written its three
* parameters to System.out
. After the simulation, the method
* has written two pieces of information to System.out
:
* (1) The number of cars washed, and (2) The average waiting time for
* customers that had their cars washed. (Customers that are still in the
* queue are not included in this average).
* @exception java.lang.IllegalArgumentException
* Indicates that one of the arguments violates the precondition.
**/
public static void carWashSimulate
(int washTime, double arrivalProb, int totalTime)
{
Queue