所以我需要一些建议,我一直在研究一些代码,我似乎永远无法找出为什么我的代码搞砸了。好像我的Product类中的一个toString行无法正常工作。这是代码:
import java.util.ArrayList;
public class lab24ArrayList
{
public static void main(String[]args)
{
ShoppingCart cart = new ShoppingCart();
Product hat = new Product ("Hat", 10);
Product scarf = new Product ("Scarf", 8);
Product legos = new Product ("Legos", 19);
Product dvd = new Product ("DVD", 12);
System.out.println("Removing DVD: "+cart.remove(dvd));
cart.add(hat);
cart.add(scarf);
cart.remove(scarf);
System.out.println("Removing Scarf: " +cart.remove(scarf));
cart.add(legos);
cart.add(dvd);
cart.add(legos);
System.out.println(cart);
}
}
class ShoppingCart
{
ArrayList <Product> cart;
public ShoppingCart()
{
cart = new ArrayList<Product>();
}
public int size()
{
int k = cart.size();
return k;
}
public void add(Product p)
{
cart.add(p);
}
public Product remove(Product p)
{
if(cart.contains(p))
{
cart.remove(p);
return p;
}
else
return null;
}
}
class Product
{
private String name;
private double price;
public Product(String _name, double _price)
{
name = _name;
price = _price;
}
public String getName() {return name;}
public double getPrice() {return price;}
public String toString() {return name + ": $"+price;}
}
当我把它放在编译器中时,我得到的就是:
Removing DVD: null
Removing Scarf: null
ShoppingCart@c2f0bd7
当我需要这个时:
Removing DVD: null
Removing Scarf: Scarf: $8
Items: 6
Total: $60.00
Hat: $10
Legos: $19
DVD: $12
Legos: $19
答案 0 :(得分:1)
您在ShoppingCart上错过了toString()
方法,这就是您获得ShoppingCart@c2f0bd7
的原因。覆盖toString()
类中的ShoppingCart
以根据其中的项构建字符串。
您还要移除围巾两次,一次是cart.remove(scarf)
,然后也是System.out.println("Removing Scarf: " +cart.remove(scarf))
。
为了阐明如何打印购物车,您将要在ShoppingCart中创建一个类似于您在产品中所做的toString方法:
public static String toString() {
StringBuilder stringBuilder = new StringBuilder();
for(Product product : cart) {
stringBuilder.append(product);
}
return stringBuilder.toString();
}
创建一个StringBuilder,遍历购物车中的每个产品并将其附加到StringBuilder。然后返回该字符串。