这是一个使用Java接口的作业。总共有3个类和一个界面:Seller
,SellerImpl
,SellerTestDriver
和Product
。我将在Seller
类中实现SellerImpl
接口,并使用我在SellerTestDriver
类中编写的代码测试输出。到目前为止,只有一种方法可以得到我想要的结果 - getName()
。其他方法似乎调用Product
类,但我无法编写任何可行的代码。我想要的是阅读方法:
name
- 贝克(已经这样做了);
product
- 面包;提供产品 - 真实;
sellProduct()
- 只是总结卖家和产品的一行文字。
任何帮助将不胜感激!
Seller
界面:
public interface Seller
{
public String getName();
public Product getProduct();
public boolean provideProduct(String productName);
public Product sellProduct();
}
SellerImpl
类:
public class SellerImpl implements Seller
{
protected String name;
protected Product product;
// TODO: Complete this constructor
public SellerImpl(String name, Product product)
{
this.name = name;
this.product = product;
}
// TODO: Complete these methods
public String getName()
{
return name;
}
public Product getProduct()
{
return product;
}
public boolean provideProduct(String productName)
{
if (productName.length() == 0) {
return null != null;
}
else {
return true;
}
}
public Product sellProduct()
{
return product;
}
}
SellerTestDriver
上课:
public class SellerImplTestDriver
{
public static void main(String[] args)
{
Seller seller = new SellerImpl("Baker", new Product("Bread", 1.95));
// TODO: Write a test for the getName() method
System.out.println("Seller is a: " + seller.getName());
// TODO: Write a test for the getProduct() method
System.out.println("Seller offers: " + seller.getProduct());
// TODO: Write a test for the provideProduct() method
System.out.println("Does this seller supply this item? " + seller.provideProduct("Bread"));
// TODO: Write a test for the sellProduct() method
System.out.println(seller.getName() +" sells " ); }
Product
课程(我根本没有被要求接触):
public class Product
{
protected String itemName;
protected double itemPrice;
public Product(String name, double price)
{
itemName = name;
itemPrice = price;
}
public String getName()
{
return itemName;
}
public void setName(String itemName)
{
this.itemName = itemName;
}
public double getPrice()
{
return itemPrice;
}
public void setPrice(double itemPrice)
{
this.itemPrice = itemPrice;
}
}
我目前的成绩:
卖家是:贝克 - 我喜欢这个,这是正确的
卖家报价:seller.Product@7a3e72
这位卖家是否提供此商品?假
买方将购买seller.Product@7a3e72
答案 0 :(得分:3)
这样:Product@7a3e72
您正在看到Product的toString()
方法返回的String,该方法继承自Object,即所有Java类的父类。 Object中的此默认toString()
方法显示类名,@
符号和对象的hashCode,并且所有类都自动继承此方法,除非它们或其父类之一选择覆盖它。
要解决此问题,您需要这样做:为您的Product类提供一个不错的public String toString()
覆盖方法,该方法返回一个完整描述产品状态的String。可能您的toString()
方法将返回产品的名称和价格。类似的东西:
@Override
public String toString() {
return "Product: " + name + ", " + price;
}
甚至更好,
@Override
public String toString() {
return "Product: " + name + ", " + currencyFormat.format(price);
}
其中decimalFormat是使用货币实例的NumberFormat变量:
private NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
答案 1 :(得分:1)
让我们看看高层。您是不是希望卖家类的实施能够容纳多个产品,并拥有每个产品的库存? (因此SellerImpl类应该保留产品列表和每个产品的库存数量。也许provideProduct意味着您必须查看产品列表,看看您是否拥有正确的产品名称和库存> 1(将是true);并且sellProduct类会将产品返回给用户并减少库存数量?
theProduct = seller.getProduct(); theProductName = theProduct.getName(); theProductPrice = theProduct.getPrice();
然后测试产品名称和产品价格是否符合您的要求
卖家提供产品..您不想测试卖家的产品是否具有特定价值?您正在测试输入参数。你想要像SellerImpl类那样的东西
if(productName == null)返回false; return product.getName()。equalsIgnoreCase(productName)
sellProduct看起来不错,但请记住测试时确保返回的值不为空,并且名称和价格符合您的预期。