如何操纵数组列表 - 计算机科学作业

时间:2015-01-07 02:03:35

标签: java arraylist computer-science

在计算机科学领域,我们目前正在研究ArrayLists并对其进行操作。我在家庭作业的一个问题上遇到了一些麻烦。

您实际上可以在此网站上here执行和查看作业:

我想知道为什么我的代码(见下文)不正确。

问题是:数组列表包含动物列表。如果动物是猫(即动物的描述包含单词“cat”或“Cat”),则将其添加到新的数组列表中。返回新的猫阵列列表。

但是我会告诉你我被困在哪里。这就是我到目前为止(再次,使用上面的链接可以找到有关问题的一小部分信息。

public String[] catty(String[] animals) { 

    ArrayList<String> animalsList = new ArrayList<String>();
    for (int i=0; i<animals.length; i++)
    {
       animalsList.add(animals[i]);
    }

    ArrayList<String> catsList = cattyB(animalsList);

    String cats[] = new String[catsList.size()];
    for (int i=0; i<catsList.size(); i++)
    {
       cats[i]=catsList.get(i);
    }

    return cats;
}

public ArrayList<String> cattyB(ArrayList<String> animalsList) 
{
  for (int i=0; i<animalsList.size(); i++)
  {
    if (animalsList.get(i).indexOf("Cat")>-1 || animalsList.get(i).indexOf("cat")>-1)
    {
      animalsList.add(animalsList.get(i));
    }
    return animalsList;
  }
  return animalsList;


}

2 个答案:

答案 0 :(得分:2)

您正在将猫添加到传递给该函数的原始列表中。这是错的。您应该创建一个新的,将猫添加到它并返回它,不是吗?那样做......

答案 1 :(得分:0)

所以这里缺少的一个是cattyB函数中需要一个新的ArrayList。然后你可以解析animalsList并将名称从那里放入新的ArrayList中。最后,我们需要返回带有猫的新ArrayList,而不是返回原来的animalsList。这里是cattyB函数的修正。我没有改变斤。在引用的网站OP上确认正确。

public ArrayList<String> cattyB(ArrayList<String> animalsList) 
{
  ArrayList<String> newListWithCats = new ArrayList<String>();
  for (int i=0; i<animalsList.size(); i++)
  {
    if (animalsList.get(i).indexOf("Cat")>-1 || animalsList.get(i).indexOf("cat")>-1)
    {
      newListWithCats.add(animalsList.get(i));
    }
  }
  return newListWithCats;
}