我目前正在做Java中的第一個編碼項目。這是一個訂購系統,應該使客戶得到以下的東西。首先,客戶應該能夠瀏覽應用程序,在哥本哈根選擇他/她最喜歡的餐廳,並從他們的個人菜單列表中選擇餐點。其次,每個訂單都應該根據訂單數量和交貨地點進行定製。最後,系統應該指派最近的可用騎車者從餐館拿起訂單,並在規定的時間將膳食送到指定的目的地。Java中膳食訂購系統的收集錯誤
在@Theresa的幫助下,我再次測試了程序,但我無法獲得最後一英里的運行。系統應該指派最近的可用騎車者從餐廳接取訂單的部分不起作用。我仍然覺得有點絕望,因爲我沒有嘗試盡我所能
任何其他意見,提示或幫助將不勝感激。提前致謝。
這是更新後的代碼:[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
}
它希望做什麼你在說,但我們還沒有用過數據庫。因此,我想我只知道如何硬編碼......:/系統本身會更有效,應該可以調整,但我們學到的東西不會讓我做任何改變。你會有任何其他建議如何處理我的硬代碼? @TheresaForster – maximal16
然後,我建議你在一個地方的硬代碼,並建立其餘的周圍休息,我猜你是做這個大學項目然後 –
是的。說實話,在編碼方面,我很小心。我擁有IT業務背景,並選擇了一門編程未成年人來真正學習高級語言。過去三週我已經投入了90個小時來完成這個項目。非常感謝!我現在將執行此操作,並嘗試看看我是否可以構建它。我希望它會停止製造問題。 – maximal16