0

配列内の 1 つの位置を新しいオブジェクトに等しくする方法は?

public SalesItem findItem(String itemCode){

    SalesItem[] item = new SalesItem();
    for (int i=0; i<size; i++) {

        if(itemCode.equals(items[i].getItemCode())){
            if(items[i].getQuantity() > 0) {
                item = items[i];
                items[i].setQuantity(items[i].getQuantity()-1);
            }
    }
 return item;
}

文字列「itemCode」を含む配列内の位置を見つけようとしています。次に、配列のその位置を使用して、宣言した新しいアイテムと等しくし、追加する新しいアイテムを返すことができるようにします買い物カゴへ。

SalesItem オブジェクトを正しく処理していないことはわかっていますが、何が原因かはわかりません。

4

2 に答える 2

3

1 つのオブジェクトではなく、SalesItems の配列を宣言しているため、の宣言はitemおそらく次のようになります。

SalesItem item = new SalesItem();

item編集:の値が割り当てられた後は使用されないため、新しいオブジェクトの作成を完全に削除することもできますitems[i]。したがって、次のように宣言するだけです。

SalesItem item = null;

の後item = items[i]に、item探していた配列内のオブジェクトへの参照が含まれるか、見つからなかった場合は null になります。

于 2013-05-15T13:23:43.677 に答える
0

getQuantity()コードの他の部分 (例:および)が正しいと仮定すると、setQuantity()SalesItemが確認できる唯一の間違いは次のとおりです。

SalesItem[] item = new SalesItem();

私はあなたが単にやりたかったと思います:

SalesItem item = null;

探しているアイテムに一致するアイテムがない場合findItem()に返されます。nullitemCode

于 2013-05-15T13:23:57.107 に答える