gpt4 book ai didi

java - 如何在对象数组中搜索关键字并将该对象复制到另一个数组

转载 作者:行者123 更新时间:2023-12-01 21:21:31 26 4
gpt4 key购买 nike

我正在做一项学校作业,但遇到了一些麻烦。基本上我有一个带有 String name 属性的对象数组,我想用关键字搜索该数组,并挑选出带有该单词的任何对象并将其存储到另一个数组中。我只能使用数组,而不能使用数组列表或树形图等。我遇到一个问题,它只获取其中一个对象,而不获取其他对象,关键字是“is”。

这是我到目前为止所拥有的:

   import java.util.Arrays;
public class TesterTwo
{

public static void main(String[] args)
{
TestObj t1 = new TestObj("Where is my house",1);
TestObj t2 = new TestObj("Canada is really cold",2);
TestObj t3 = new TestObj("It's a big world",3);
TestObj t4 = new TestObj("What is This",4);
TestObj t5 = new TestObj("I'm at home",5);
TestObj[] thingy = new TestObj[]{t1,t2,t3,t4,t5};
System.out.println("BEFORE");
for(int a = 0; a < thingy.length; a++)
{
System.out.println(thingy[a].getName());
}
TestObj [] searchResult = new TestObj[5];

for (int i = 0; i < thingy.length; i++)
{
if(thingy[i].getName().contains("is"))
{
int j = 0;
searchResult[j] = thingy[i];
j++;
}else{continue;}
}
thingy = searchResult;
System.out.println("After the search has gone through:");
System.out.println("");

for(int i = 0; i < thingy.length; i++){
if(thingy[i] == null){break;}
System.out.println(thingy[i].getName());
}

}
}

编辑:我发现我的循环做错了。这是我的修复:

TestObj [] searchResult = new TestObj[thingy.length];

for (int i = 0, k=0; i < thingy.length; i++)
{
if(!thingy[i].getName().contains("is"))
{
continue;
}
searchResult[k++] = thingy[i];

}
thingy = searchResult;

最佳答案

问题出在声明的j整型变量的范围内。现在,您已在 for 循环内部声明了它,这使得 j 的范围仅可用于单次迭代。在迭代结束时,j 变量将被删除,新的迭代会生成新的变量。将 j 的声明移到 for 循环之外:

int j =0;
for (int i = 0; i < thingy.length; i++)
{
if(thingy[i].getName().contains("is"))
{
//...
}
}

此外,不需要整个 else 语句,因为 if 语句位于循环的最后,如果 if 为 false,则循环将尝试进入下一个迭代。

编辑:

您提供的修复比我原来的答案有一些性能改进。在 for 语句中使用第二个变量使其在所有迭代中都可用,并且循环完成后该变量将从内存中删除,因此对于我提供的示例,它将是:

for (int i = 0, j =0; i < thingy.length; i++) { //...

关于java - 如何在对象数组中搜索关键字并将该对象复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com