我从另一个类调用方法时遇到错误。我在课堂 StockManager ,我想在课程产品中调用 toString 方法。
但是我收到了错误:类中的Constructor Product Product不能应用于给定的类型:required:int.java.lang.String;发现:没有争论;原因:实际和格式参数列表的长度不同
BTW我正在使用BlueJ。
请注意下面的printProductDetails()方法。这就是我想写的。
以下是我在StockManager课程中获得的所有内容。我正在尝试在下面的printProductDetails()方法中打印出Product类中toString的详细信息:
import java.util.ArrayList;
/**
* Manage the stock in a business.
* The stock is described by zero or more Products.
*
* @author (your name)
* @version (a version number or a date)
*/
public class StockManager
{
// A list of the products.
private ArrayList<Product> stock;
/**
* Initialise the stock manager.
*/
public StockManager()
{
stock = new ArrayList<Product>();
}
/**
* Add a product to the list.
* @param item The item to be added.
*/
public void addProduct(Product item)
{
stock.add(item);
}
/**
* Receive a delivery of a particular product.
* Increase the quantity of the product by the given amount.
* @param id The ID of the product.
* @param amount The amount to increase the quantity by.
*/
public void delivery(int id, int amount)
{
}
/**
* Try to find a product in the stock with the given id.
* @return The identified product, or null if there is none
* with a matching ID.
*/
public Product findProduct(int id)
{
return null;
}
/**
* Locate a product with the given ID, and return how
* many of this item are in stock. If the ID does not
* match any product, return zero.
* @param id The ID of the product.
* @return The quantity of the given product in stock.
*/
public int numberInStock(int id)
{
return 0;
}
/**
* Print details of all the products.
*/
public void printProductDetails()
{
Product string = new Product();
string.toString(); {
System.out.println("Attempt to restock " +
name +
" with a non-positive amount: " +
amount);
}
}
}
如何解决这个问题的具体帮助以及建议的一些原因将不胜感激谢谢。
产品类别:
/**
* Model some details of a product sold by a company.
*
* @author David J. Barnes and Michael Kölling.
* @version 2011.07.31
*/
public class Product
{
// An identifying number for this product.
private int id;
// The name of this product.
private String name;
// The quantity of this product in stock.
private int quantity;
/**
* Constructor for objects of class Product.
* The initial stock quantity is zero.
* @param id The product's identifying number.
* @param name The product's name.
*/
public Product(int id, String name)
{
this.id = id;
this.name = name;
quantity = 0;
}
/**
* @return The product's id.
*/
public int getID()
{
return id;
}
/**
* @return The product's name.
*/
public String getName()
{
return name;
}
/**
* @return The quantity in stock.
*/
public int getQuantity()
{
return quantity;
}
/**
* @return The id, name and quantity in stock.
*/
public String toString()
{
return id + ": " +
name +
" stock level: " + quantity;
}
/**
* Restock with the given amount of this product.
* The current quantity is incremented by the given amount.
* @param amount The number of new items added to the stock.
* This must be greater than zero.
*/
public void increaseQuantity(int amount)
{
if(amount > 0) {
quantity += amount;
}
else {
System.out.println("Attempt to restock " +
name +
" with a non-positive amount: " +
amount);
}
}
/**
* Sell one of these products.
* An error is reported if there appears to be no stock.
*/
public void sellOne()
{
if(quantity > 0) {
quantity--;
}
else {
System.out.println(
"Attempt to sell an out of stock item: " + name);
}
}
}
答案 0 :(得分:1)
您需要在Product类中定义默认构造函数(不带参数),或者在获取Product实例时传递int id,String name:
// ...
Product string = new Product(1, "test value");
string.toString();
// ...
答案 1 :(得分:1)
printProductDetails
方法不应该打印stock
中的所有产品吗?这就是文档所说的:
- 打印所有产品的详细信息。
所以我的猜测是你需要实际迭代你的stock
而不是试图构建Product
。
public void printProductDetails() {
for (Product product:stock) {
System.out.println(product);
}
}
答案 2 :(得分:0)
从你的问题来看,这就是我的想法。
您需要覆盖toString()
中的Product class
。在Product class
public String toString()
{
String str = "\n******Product ******\n"+
"Name :"+this.name+
"\nType :"+this.type;
return str;
}
您可以使用System.out.println(product)
打印您的产品,其中product
是Product class
的实例