I am currently doing my very first coding project in Java. It is an Ordering System that should enable the customer the following things. First the customer should be able to navigate through the application, select his/her favourite restaurant within Copenhagen, and choose meals from their individual menu lists. Second, each order should be customizable with relation to the order quantity and delivery location. Lastly, the system should assign the closest available biker to pick up the order from the restaurant and deliver the meal to the indicated destination at the defined time.
After much help of @Theresa I tested the programme again, but I can't get the last mile to run. The part where the system should assign the closest available biker to pick up the order from the restaurant does not work. I still feel kind of hopeless, because I haven tried been everything I could
Any other comments, hints or help would be highly appreciated. Thanks a lot in advance.
This is the updated code:[https://www.dropbox.com/s/awvohw7vholsdrd/Cleaner_DeliveryBike.zip?dl=0][1]
private static void setDelivery() throws Exception {
double totalTime = 0;
String delivery = "Now that you have chosen what you want to order, we would like to introduce to you our MadCyklers."
+ "All day we have 5 biker that are touring arround the city to deliver your order right to you. We only need"
+ "to know one thing from you: where in Copenhagen are you right now?";
try {
printString(navigationFrameTop);
printString(delivery);
printString(navigationFrameBottom);
printString(categoryFrame);
System.out.println(" *COPENHAGEN* ");
System.out.println("");
System.out.println(" LONG> 12.52 12.54 12.56 12.58 12.60 12.62");
System.out.println(" . . . . . . ");
System.out.println(" 55.70 + . . . + . . . + . . . + . . . + . . . + ");
System.out.println(" . . . . . . ");
System.out.println(" 55.69 + . . . + . . . + . . . + . . . + . . . + ");
System.out.println(" . . . . . . ");
System.out.println(" 55.68 + . . . + . . . + . . . + . . . + . . . + ");
System.out.println(" . . . . . . ");
System.out.println(" 55.67 + . . . + . . . + . . . + . . . + . . . + ");
System.out.println(" . . . . . . ");
System.out.println(" 55.66 + . . . + . . . + . . . + . . . + . . . + ");
System.out.println(" ^ . . . . . . ");
System.out.println(" LAT");
printString(categoryFrame);
printString(inputFrame);
customer.setLongitude(0);
printString(inputFrame);
customer.setLatitude(0);
printString(inputFrame);
double min = 9999999;
double distance;
// checking if Indications are correct.
for(Biker biker : BIKERS) {
biker.setLatitude(0);
biker.setLongitude(0);
distance = biker.distanceTo(customer) + (restaurants.get(restaurantPick)).distanceTo(customer);
if(distance < min) {
min = min + distance;
activeBiker = biker.iD;
}
}
totalTime = (min / KILOMETRES_PER_HOUR) * 3600000
+ restaurants.get(restaurantPick).getPreparationTime() * 60000;
deliveryTime = (long) (currentTime + totalTime);
String deliveryConfirmation = " Your order will be delivered to your location at: " + deliveryTime
+ " from our MadCykler " + BIKERS.get(activeBiker).getTipFactor() + ".";
printString(deliveryConfirmation);
payment();
} catch (Exception e) {
printString(errorFrame);
System.out.println("Error! Reloading Main Menu...");
printString(errorFrame);
main(null);
}
}
private static void payment() throws Exception {
BigDecimal tip = BigDecimal.ZERO;
BigDecimal tipPrice = BigDecimal.ZERO;
int payingOption = 0;
String payment = "There is only one more thing left to do for you. Just initialize the payment and we will send"
+ "you the order confirmation. Then you just have to wait for" + BIKERS.get(activeBiker).getTipFactor()
+ "to arrive with your order.";
String totalCost = "The total costs are " + getTotal() + "DKK. What % tip would you like to give to the Cykler? ";
try {
printString(navigationFrameTop);
printString(payment);
printString(navigationFrameBottom);
printString(categoryFrame);
printString(totalCost);
printString(categoryFrame);
printString(inputFrame);
tip = BIKERS.get(activeBiker).getTipFactor();
printString(inputFrame);
tipPrice = tip.divide(tip, 100).multiply(getTotal());
deliveryCost = deliveryCost.add(getTotal()).add(tipPrice);
String totalDelivery = "The overall delivery cost are " + deliveryCost + "DKK. Press [1] if you would like to pay,"
+ "[2] to pick a new restaurant, or [3] to return to the Main Menu.";
String totalDeliveryError = "Error! Press [1] if you would like to pay,[2] to pick a new restaurant, or [3] to "
+ "return to the Main Menu.";
printString(categoryFrame);
printString(totalDelivery);
printString(categoryFrame);
do {
Scanner input = new Scanner(System.in);
printString(inputFrame);
payingOption = input.nextInt();
printString(inputFrame);
switch (payingOption) {
case 1:
wrapOrder();
break;
case 2:
choiceMeal = null;
quantityMeal = null;
pickingRestaurant();
break;
case 3:
choiceMeal = null;
quantityMeal = null;
main(null);
break;
default:
printString(errorFrame);
printString(totalDeliveryError);
printString(errorFrame);
break;
}
} while (payingOption != 1 && payingOption != 2 && payingOption != 3);
} catch (Exception e) {
printString(errorFrame);
System.out.println("Error! Reloading Main Menu...");
printString(errorFrame);
main(null);
}
}
private static void wrapOrder() {
String s = "";
UUID customerId;
BigDecimal currentBalance = BigDecimal.ZERO;
String customerDetails = customer.toString();
long arrival = deliveryTime;
BigDecimal bill = deliveryCost;
currentBalance = creditAccounts.get(customerAccountLoggedIn).getBalance();
if (currentBalance.compareTo(deliveryCost) > 0) {
printString(categoryFrame);
System.out.println(" Your payment was successful.");
printString(categoryFrame);
creditAccounts.get(customerAccountLoggedIn).withdraw(deliveryCost);
for (int i = confirmations.size(); i < confirmations.size() + 1; i++) {
customerId = confirmations.get(i).getOrderId();
Confirmation confirmation = new Confirmation(customerId, customerDetails, arrival, bill);
confirmations.add(confirmation);
printString(navigationFrameTop);
confirmation.toString();
printString(navigationFrameBottom);
}
}
else {
printString(errorFrame);
creditAccounts.get(customerAccountLoggedIn).withdraw(deliveryCost);
printString(errorFrame);
reCharging();
}
// ending the program and clearing all content during the order
}