0
/**
 * Creates and returns an array of media items that match the call number.
 * The length of the returned array is equal to the number of media items
 * that match the call number, and each element in the array is one of the
 * matching media items.
 * 
 * @param callNumber the call number of the media items
 * @return an array of matching media items.
 */
public MediaItem [] findItems(String callNumber)
{
    MediaItem[] tmp = new MediaItem[MAX_ITEMS];
    for (int i = 0; i <= inventory.size(); i++)
    {
        int j = inventory.indexOf(callNumber);
        
        tmp.add(inventory.get(j));
        return tmp;
    }
    
}

包括该方法的描述,我正在尝试添加到创建的 tmp 数组中,但是使用 .add() 不起作用,因为对于这个项目,添加的对象是 MediaItem,而不是 int 或 String,所以我不不知道该怎么办。

4

1 回答 1

0

数组的大小不能在 Java 中动态更改,就像在 C/C++ 中所做的那样。因此,为了在数组中添加元素,可以使用以下方法之一:

  • 创建一个大小为 n+1 的新数组,其中 n 是原始数组的大小。
  • 在此数组中添加原始数组的 n 个元素。
  • 在第 n+1 个位置添加新元素。
  • 打印新数组。

add(object)数组中没有方法。

在这种情况下,您应该将变量分配给数组中的索引,如下所示:

tmp[i] = inventory.get(j);

所以你的代码应该是这样的:

public MediaItem [] findItems(String callNumber)
{
    MediaItem[] tmp = new MediaItem[MAX_ITEMS];
    for (int i = 0; i <= inventory.size(); i++)
    {
        int j = inventory.indexOf(callNumber);
        
        tmp[i] = inventory.get(j);
        return tmp;
    }
    
}
于 2020-09-24T18:50:43.490 回答