0

別のクラスからメソッドを呼び出すときにエラーが発生します。StockManagerクラスにいて、 ProductクラスのtoStringメソッドを呼び出したいと思っています。

しかし、エラーが発生します。ProductクラスのコンストラクタProductは、指定された型に適用できません。required:int.java.lang.String; 見つかった:引数なし; 理由:実際の引数リストとフォーマット引数リストの長さが異なります

ところで、私は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);
    }
}
}
4

3 に答える 3

1

Productクラス(引数なし)でデフォルトのコンストラクターを定義するか、Productインスタンスを取得するときにint id、Stringnameを渡す必要があります。

// ...
Product string = new Product(1, "test value");
string.toString();
// ...
于 2013-03-15T20:40:36.190 に答える
1

printProductDetailsメソッドはすべての製品を印刷するべきではありませんstockか?それはドキュメントが言っていることです:

  • すべての製品の詳細を印刷します。

したがって、私の推測では、実際に反復する必要があり、stockを構築しようとしないでくださいProduct

public void printProductDetails() {
    for (Product product:stock) {
        System.out.println(product);
    }
}
于 2013-03-15T20:46:39.433 に答える
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)どこにあるかを使用して、製品を印刷できます。productProduct class

于 2013-03-15T20:39:48.873 に答える