1

これに対する答えは、振り返ってみるとおそらく明白になるでしょうが、今のところ、私はこれにかなりこだわっています。最初にいくつかのコード ブロックを示してから、問題を提示します。

これは私のクラス Stockmanager の一部です。この問題とは関係のないいくつかのメソッドを省略しました。

import java.util.ArrayList;

public class StockManager
{
private ArrayList stock;

public StockManager()
{
    stock = new ArrayList();
}

public void addProduct(Product item)
{
    stock.add(item);
}

public Product findProduct(int id)
{
    int index = 0;
    while (index < stock.size())
    {
        Product test = stock.get(index);
        if (test.getID() == id)
        {
            return stock.get(index);
        }
        index++;
    }
    return null;
}

public void printProductDetails()
{
    int index = 0;
    while (index < stock.size())
    {
        System.out.println(stock.get(index).toString());
        index++;
    }
}

}

これが私のクラス Product で、ここでもいくつかのメソッドが省略されています。

public class Product
{
private int id;
private String name;
private int quantity;

public Product(int id, String name)
{
    this.id = id;
    this.name = name;
    quantity = 0;
}

public int getID()
{
    return id;
}

public String getName()
{
    return name;
}

public int getQuantity()
{
    return quantity;
}

public String toString()
{
    return id + ": " +
           name +
           " voorraad: " + quantity;
}

}

私の問題は、findProduct() メソッドでコンパイル時エラーが発生することにあります。具体的には、この行はincompatible typesProduct test = stock.get(index);というメッセージで示されます。

StockManager のコンストラクターは、ArrayListstock という名前の新しい を作成します。メソッドから明らかなように、addProduct()これArrayListにはタイプのアイテムが含まれていますProduct。クラスにはいくつかの変数があり、そのProductうちの 1 つは id と呼ばれ、整数型です。そのクラスには、 idgetID()を返すメソッドも含まれています。

私の知る限り、arraylist から項目を取得するget()方法は、項目の位置を示す () の間の数字を使用する方法です。私のarraylistには のインスタンスが含まれているので、arraylistでメソッドを使用すると、 as 結果Productが得られると期待しています。したがって、Product 型の test という変数を定義し、arraylist から項目を割り当てようとすると、なぜ機能しないのかわかりません。私が知る限り、arraylist のオブジェクトに対して Product のメソッドを使用するメソッドで、この同じ手法をうまく使用しています。Productget()printProductDetails()toString()

誰かが私が間違っている場所を明確にしてくれることを願っています. 違いがある場合は、BlueJ でこの作業を行っていますが、これはおそらく最適なツールではありませんが、この学校のプロジェクトで使用することになっているものです。

4

3 に答える 3