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

问题描述 投票:0回答:1

我正在做学校作业,遇到了一些麻烦。基本上,我有一个具有String name属性的对象数组,我想用一个关键字搜索该数组,然后挑选出带有该单词的任何对象并将其存储到另一个数组中。我只能使用一个数组,而不能使用arraylist或treemaps等。我遇到一个问题,它仅获取一个对象而不是其他对象,关键字为“ 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;
java arrays loops search
1个回答
0
投票

问题在于声明的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为假,则循环将尝试进行下一个迭代。

© www.soinside.com 2019 - 2024. All rights reserved.