在句子数组中找到一个特定的词,并返回包含该词的句子。

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

输入是字符串数组,如下所示。

样本日志行:001 555 3334523 AppName 2341 这是一条消息.001 1224 3334524443 AppSecond 2341 这是一条消息blah 341""-*.022201 55555 3333334523 AppThird 2341 这是一些其他消息.0301 533555 3334523 AppName 2341 这是另一条消息。

我需要打印所有包含以下内容的行 应用名称 在里面。

这是我试过的。

  public static void findArrayString(String[] input, String item)
  {
    for(int i = 0; i < input.length; i++)
     {

      List<String> chr = new ArrayList<>();
        chr = Arrays.asList(input[i]);

      if(chr.get(i).contains(item))
      {
        System.out.println(input[i]);
      }

    }
  }

  public static void main(String[] args) 
  {
    String[] str = {"001 555 3334523 AppName 2341 This is a message.",
                   "001 1224 3334524443 AppSecond 2341 This is a message blah 341-*.",
                   "022201 55555 3333334523 AppThird 2341 This is some other message.",
                    "0301 533555 3334523 AppName 2341 This is another message."};

    findArrayString(str,"AppName");

  }
}

My output is :

001 555 3334523 AppName 2341 This is a message.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at java.base/java.util.Arrays$ArrayList.get(Arrays.java:4351)
    at Solution.findArrayString(Solution.java:31)
    at Solution.main(Solution.java:47)

谁能告诉我,我哪里做错了?

java string
2个回答
1
投票
  List<String> chr = new ArrayList<>();
  chr = Arrays.asList(input[i]);

创建了一个带有单个元素的List。 但随后

if(chr.get(i).contains(item))

试图找到 i第三元素 chr. 由于只有一个元素,所以当出现以下情况时,就会抛出异常 i > 0.

中间列表是不需要的--在循环中试试这样的东西。

  if(input[i].contains(item))
  {
    System.out.println(input[i]);
  }

0
投票

你用一个for循环把段落分成了句子,但是为了把句子分成单词,你需要使用另一个for循环,这样才能对单词进行比较。

public static void findArrayString(String[] input, String item)
      {
        for(int i = 0; i < input.length; i++)
         {

          List<String> chr = new ArrayList<>();
            chr = Arrays.asList(input[i]);

            for(int j=0;j<chr.size();j++) {
                if(chr.get(j).contains(item))
              {
                System.out.println(input[i]);
              }
            }      
        }
      }
© www.soinside.com 2019 - 2024. All rights reserved.