篮子里的Java打印产品

时间:2014-11-13 18:47:44

标签: java class methods arraylist

试图围绕我今天一直试图做的事情,我今天几乎没有成功,我想我会去问StackOverflow的聪明人。

我要做的是创建两个类:Basket和Product。 Product类看起来像这样:

public class Product
    {
    private final String identifier;
    private final float price;
    public Product(final String productIdentifier, float productPrice) {
        identifier = productIdentifier;
        price = productPrice;
    }
    public String getIdentifier() {
        return identifier;
    }
    public float getPrice() {
        return price;
    }
    public void print() {
        System.out.println(identifier + "   " + price + " EUR");
    }
}

我现在要做的篮子课应该可以做一些事情。首先也是最重要的是它应该将产品添加到篮子中并在控制台上打印出来。后者是我遇到的巨大困难。

这是我到目前为止所做的:

import java.util.ArrayList;

public class Basket
{
    private ArrayList<Product> products;

    public Basket()
    {
        produkte = new ArrayList<Product>();
    }
    public void addProduct(final String productIdentifier, final float productPrice)
    {
        produkte.add( new Product (productIdentifier, productPrice));
    }
    public void printBasket() 
    {
        //Print products in basket using the print() function of the Product class.
    }
}

我已经尝试了很多东西来打印出我添加的产品。然而,他们是如此无果而终,我发现自己现在在这里寻求帮助。

到目前为止我尝试的内容看起来像这样:

for(int i = 0; i < products.size(); i++) 
{
    Product.print();
}

这给我留下的是我无法在静态上下文中使用print()。所以我尝试将print()作为一个静态函数,虽然不会起作用,因为我在其中使用了非静态变量标识符和价格。

我觉得我所缺少的只是一件小事,不过对Java不熟悉我可能只是错过了很长时间。我希望的是推动正确的方向,并指出我做错了什么。

3 个答案:

答案 0 :(得分:2)

你有Product.print();

的地方

尝试products.get(i).print();

应该解决它

答案 1 :(得分:1)

从实例化的Product对象中调用Product的print方法,然后您就可以开始了。您必须指定要打印的Product对象,否则您不会知道要使用哪些变量(这就是为什么静态不会起作用)。

答案 2 :(得分:1)

您确定需要循环,但这不是正确的:

for(int i = 0; i < products.size(); i++) 
{
    Product.print();
}

Product是一个类,因此您无法在其上调用非静态方法。您希望在列表中的对象上调用print,而不是在整个类上调用for(int i = 0; i < products.size(); i++) { products.get(i).print(); } 。为此,我们必须循环使用&#34;依次访问其中每个对象的列表:

for(Product p : products) 
{
    p.print();
}

你也可以使用for-each循环,这使你很清楚你重新处理列表中的每个元素(因为这就是这些循环的用途):

{{1}}