这是一个使用Java接口的任务。总共有3个类和一个接口:Seller、SellerImpl、SellerTestDriver和Product。我将在SellerImpl类中实现Seller接口,并用我在SellerTestDriver类中编写的代码测试输出。到目前为止,只有一种方法给出了我想要的结果-- getName()。其他方法似乎调用了Product类,但我一直无法编写任何可以工作的代码。我想要的是要读取的方法:
name - Baker (它已经这么做了);
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
发布于 2014-04-12 21:49:29
有了这个:Product@7a3e72
您将看到由Product方法返回的字符串,该方法继承自Object,它是所有toString()类的父类。这个来自Object的默认toString()方法显示类名、@符号和对象的hashCode,所有类都会自动继承此方法,除非它们或它们的某个父类选择覆盖它。
要解决这个问题,您只需这样做:为您的Product类提供一个像样的public String toString()覆盖方法,该方法返回一个完全描述Product状态的字符串。您的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();发布于 2014-04-12 22:07:36
让我们来看一下高层。您不希望seller类的实现有一种方法来保存多个产品,并拥有每个产品的清单吗?(因此,SellerImpl类应该保留一个产品列表和每个产品的库存计数。也许provideProduct意味着您必须查看产品列表,看看您是否有正确的产品名称和库存>1(这是真的);sellProduct类将把产品返回给用户并减少库存数量?
这样的东西
theProduct = seller.getProduct();theProductName = theProduct.getName();theProductPrice = theProduct.getPrice();
然后测试一下产品名称和产品价格是否符合您的要求
如果(productName == null)返回product.getName().equalsIgnoreCase(productName);返回false
https://stackoverflow.com/questions/23031131
复制相似问题