【发布时间】:2017-03-31 14:18:21
【问题描述】:
我有一个名为 ItemToPurchase 的类,它带有私有变量声明和公共方法来设置和获取这些变量的值。这个类也有一个默认的构造函数和一个以字符串的 itemName 和 itemDescription 作为参数的构造函数。 示例:
public class ItemToPurchase{
private String itemName;
public void setName(String name){
...
}
public String getName(){
return name;
}
}
然后是另一个名为购物车的类,它做同样的事情,它也包含这个方法。
private ArrayList<ItemToPurchase> cartItems;
cartItems = new ArrayList<ItemToPurchase>();
public void removeItem(String itemName) {
if (cartItems.contains(itemName)) {
cartItems.remove(itemName);
} else {
System.out.println("Item not found in cart. Nothing removed.");
}
}
并且 ShoppingCartManager 类包含 main 并且在 main 中有一个循环打印一个看起来像这样的菜单。
ShoppingCart cart = new ShoppingCart(cName, tDate);
public static void main(String[] args) {
sc = new Scanner(System.in);
ShoppingCart object = new ShoppingCart();
System.out.println("Enter Customer's Name: ");
String cName = sc.nextLine();
System.out.println("Enter Today's Date: ");
String tDate = sc.nextLine();
System.out.println("Customer Name: " + cName + "\n" + "Today's Date: "
+ tDate);
ShoppingCart cart = new ShoppingCart(cName, tDate);
printMenu(cart);
}
public static void printMenu(ShoppingCart cart) {
char input;
do {
System.out.println("Menu");
System.out.println("a - Add item to cart");
System.out.println("d - Remove item from cart");
System.out.println("q - Quit");
System.out.println("");
System.out.print("Choose an option: ");
input = sc.next().charAt(0);
switch (input) {
case 'a':
addItem(cart);
break;
case 'd':
removeItem(cart);
break;
default:
}
} while (input != 'q');
}
public static void removeItem(ShoppingCart cart) {
System.out.println("REMOVE ITEM FROM CART");
System.out.println("");
System.out.print("Enter name of item to remove: ");
String itemName = sc.next().trim();
ShoppingCart object = new ShoppingCart();
object.removeItem(itemName);
}
public static void changeItem(ShoppingCart cart) {
System.out.println("CHANGE ITEM QUANTITY");
System.out.print("Enter the item name: ");
System.out.println("");
String itemName = sc.next().trim();
System.out.println("Enter the new quantity: ");
int nQuantity = sc.nextInt();
ItemToPurchase oItemName = new ItemToPurchase();
if (itemName.equals(oItemName.getName())){
oItemName.setQuantity(nQuantity);
}
谁能解释为什么 removeItem() 和 changeItem() 方法不起作用? 如果您需要了解有关代码的更多信息,请告诉我。
【问题讨论】:
-
ArrayList contains方法和删除方法需要ItemToPurchase类型的对象,而不是字符串。 -
你怎么知道它不工作? (双关语)
标签: java arrays arraylist methods