我正在嘗試學習Java,並遇到了本書中列出的練習 中的一個問題。練習要求我使用 ArrayList
s創建一個模擬購物車的程序。我已經有 一切正常運行,但是,當我嘗試總計 合計finalPrice
時,我得到一個數字是遠離。任何幫助都會很棒。使用arraylist的總計
import java.util.ArrayList;
import java.util.Scanner;
public class Shop1 {
public static void main(String[]args) {
ArrayList <Item> cart = new ArrayList();
Item item;
String itemName;
double itemPrice;
int quantity;
double finalPrice = 0;
Scanner scan = new Scanner(System.in);
String keepShopping = "y";
do {
System.out.print("Enter the name of the item: ");
itemName = scan.next();
System.out.print("Enter the unit price: ");
itemPrice = scan.nextDouble();
System.out.print("Enter the quantity: ");
quantity = scan.nextInt();
// create a new item and add it to the cart
item = new Item(itemName, itemPrice, quantity);
cart.add(item);
for (int i = 0; i < cart.size(); i++) {
Item temp = cart.get(i);
System.out.println(temp);
double subTotal =
((temp.getPrice()) * (temp.getQuantity()));
finalPrice += subTotal;
}
System.out.print("Continue shopping (y/n)? ");
keepShopping = scan.next();
} while (keepShopping.equals("y"));
System.out.println("Please pay: $" + finalPrice);
}
}
非常有幫助的解釋。謝謝! – Joel 2011-06-15 02:45:18
我沒有得到你答案的最後部分的邏輯:整個「for」陳述簡化爲那一行還是什麼? – mico 2011-06-15 18:57:06
'for'循環在'do-while'循環中。所以每次添加新物品時,他都會瀏覽整個清單並將所有物品的價格加起來。那真的沒有必要。他真正需要做的就是計算最近項目的成本,並將其添加到運行總數中。 另一種選擇是在'while(keepShopping.equals(「y」));'之後,但在'System.out.println(')之前將整個'for'循環移到'do-while' 「請付:$」+ finalPrice);' – Mike 2011-06-16 18:20:24