インデックスからアイテムを削除し、インデックス内の残りのすべてのアイテム番号を 1 減算するメソッドを書き直す必要があります。
上記の条件を含めて、"getLot" を書き直して、ロットの検索にインデックス番号に依存しないようにする必要があります。ロット番号に従ってロットのみを検索する必要があります。したがって、ロット番号 2 が削除された場合、ロット 3 はインデックス 2 からインデックス 1 に移動し、ロット 3 として検出されます。インデックス 2 ではなく、ロット 3 として検出されます。(インデックスは 0 から始まります)
これが私のコードです:
public Lot getLot(int lotNumber)
{
if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
// The number seems to be reasonable.
Lot selectedLot = lots.get(lotNumber - 1);
// Include a confidence check to be sure we have the
// right lot.
if(selectedLot.getNumber() != lotNumber) {
System.out.println("Internal error: Lot number " +
selectedLot.getNumber() +
" was returned instead of " +
lotNumber);
// Don't return an invalid lot.
selectedLot = null;
}
return selectedLot;
}
else {
System.out.println("Lot number: " + lotNumber +
" does not exist.");
return null;
}
}
ありがとうございました。