我的一个课程不会输出任何内容

时间:2015-02-14 15:39:03

标签: java class tostring

所以我需要一些建议,我一直在研究一些代码,我似乎永远无法找出为什么我的代码搞砸了。好像我的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

1 个答案:

答案 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。然后返回该字符串。