import java.util.ArrayList; public class Street { private double length; private int numberOfLanes; private ArrayList vehicles; private StreetNames name; public Street(double length, int numberOfLanes, StreetNames name) { vehicles = new ArrayList<>(); setLength(length); setNumberOfLanes(numberOfLanes); this.name = name; } private void setLength(double length) { if (length >= 0) this.length = length; else throw new IllegalArgumentException("Can not make a negative length street"); } private void setNumberOfLanes(int numberOfLanes) { if (numberOfLanes >= 1) this.numberOfLanes = numberOfLanes; else throw new IllegalArgumentException("Street can not have less then 1 lane"); } public double getLength() { return length; } /** * Gets total length of one lane * number of lanes * As if it is a sigle longer lane. * @return Total length of all lanes combined */ public double getCombinedLength() { return this.length * this.numberOfLanes; } public int getNumberOfLanes() { return numberOfLanes; } public ArrayList getVehicles() { return vehicles; } public StreetNames getName() { return name; } public double capcity() { double totalLength = length * numberOfLanes; double totalLenthofCar=0; for(int i=0;i vehicle.getVehicleSize() + 0.5) { //adds incoming vehicle in last. vehicles.add(vehicle); //} } public double capcityPoint(double min, double max) { double totalLength = (max - min) * numberOfLanes; double totalLenthofCar=0; for(int i=0;i= min && vehicles.get(i).getCurrentLocation() <= max) totalLenthofCar+=vehicles.get(i).getVehicleSize(); } return totalLenthofCar / totalLength; } }