【发布时间】:2017-12-02 17:17:32
【问题描述】:
我正在尝试从购物车中取出价值美元的物品。例如,如果我的购物车中有 4 件商品,我希望能够删除 #4 商品,然后让程序继续处理剩余的三件商品。但是,在我的输出中,您会看到虽然我要求删除项目 #4,但它会删除值为 4 的项目(如 $4.00),而不是项目 #4。
System.out.print("Would you like to delete an item - y/n: ");
String deleteResponse = textReader.nextLine();
while ((!deleteResponse.equalsIgnoreCase("y")) && (!deleteResponse.equalsIgnoreCase("n")))
{
System.out.print("Sorry - we need a y/n: ");
deleteResponse = textReader.nextLine();
}
if ((deleteResponse.equalsIgnoreCase("y")))
{
System.out.println();
System.out.print("Provide an item to delete: #");
int removalRequest = numberReader.nextInt();
while (removalRequest > cartItems.size())
{
System.out.print("That number is out of range - try again:# ");
removalRequest = numberReader.nextInt();
}
int y = 0;
while (y < cartItems.size())
{
if (cartItems.get(y) == removalRequest)
{
cartItems.remove(y);
}
else
{
y++;
}
}
System.out.println("\nItem #" + removalRequest + " has been removed.");
}
else
{
System.out.println();
System.out.println("Thanks - no items will be deleted.");
}
System.out.println("\n********** Here is your final list of items **********");
System.out.println();
for (counter = 0; counter < cartItems.size(); counter++)
{
System.out.println("Item #" + (counter + 1) + ": " + dollarFormatter.format(cartItems.get(counter)));
}
// find subtotal
double subtotal = 0;
for (int i = 0; i < cartItems.size(); i++)
{
subtotal += cartItems.get(i);
}
输出应如下所示:
它不会删除 5.00 美元的 #4,而是删除 4.00 的项目 #3。我不应该使用 ArrayList while 循环吗?我应该改用 for 循环吗?
我的输出是:
【问题讨论】:
-
不需要
if/else,您只需这样做:cartItems.remove(removalRequest); -
if (cartItems.get(y) == removalRequest)-> 在这里删除具有 值4.00的项目。您想删除 indexremovalRequest - 1处的项目 -
caritem 到底是什么?,Set,Array???
-
使用
Iterator -
谢谢,反斜杠。关于索引的注释帮助我修复了它!有没有办法刷新arrayList?例如,如果我希望用户能够添加第二组值,我如何让程序“忘记”第一组值?
标签: java for-loop arraylist while-loop