【发布时间】:2015-01-11 00:43:48
【问题描述】:
今天我一直在尝试做的事情几乎没有成功,我想我会去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");
}
}
我现在尝试做的 Basket 类应该能够做一些事情。首先也是最重要的是,它应该将产品添加到购物篮并在控制台上打印出来。后者是我遇到的巨大困难。
这是我目前所拥有的:
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 新手,我可能只是错过了很多时间。我希望的是朝着正确的方向轻推,并指出我做错了什么。
【问题讨论】:
-
是的,这是一个容易犯的错误。这里要记住的关键是您必须访问特定的对象引用而不是类名。
Product.print()表示您正在执行一些与特定Product对象无关的静态方法。该方法必须声明为static方法才能工作。有关使用它的示例,请查看 java api 中的Math对象。 ControlAltDel 的回答将引导您朝着正确的方向前进。
标签: java class methods arraylist