在计算机科学领域,我们目前正在研究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;
}
答案 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;
}