I don't understand why when I call the following method it ends up being an infinite loop.
I tell the method to remove the store from the arrayList so I don't understand why the loop would never stop.
//Returns a list of suppliers to visit starting with the most valuable public ArrayList<Store> getSuppliersToVisit() { double maxValue = 0.0; Store bestCurrentSupplier = null; ArrayList<Store> suppliersToVisit = new ArrayList<Store>(20); ArrayList<Store> tempSuppliers; tempSuppliers = suppliers; while(tempSuppliers.size() > 0) { for (Store s : tempSuppliers) { double distance = 0.0; double costOfTravel = 0.0; double tempValue = 0.0; double costOfItems = 0.0; double numOfItems = 0; GPSLocation gps = new GPSLocation(); distance = gps.getDistanceInMiles(s.getLocation()); costOfTravel = distance * 1; //Retrieves the inventory of the store and adds to the number //of items and there total cost for (StoreItem si : s.getInventory()) { numOfItems ++; costOfItems += si.getPrice(); } //Calculates the value of this supplier and if the supplier //is valued higher than the highest valued supplier thus far, //said supplier is initialized as the highest supplier tempValue = (numOfItems / costOfItems) + costOfTravel; if(tempValue > maxValue) { maxValue = tempValue; bestCurrentSupplier = s; } } tempSuppliers.remove(bestCurrentSupplier); suppliersToVisit.add(bestCurrentSupplier); } return suppliersToVisit; }
I tell the method to remove the store from the arrayList so I don't understand why the loop would never stop.