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

Java 在句子数组中找到一个特定的单词,并返回包含该单词的句子,java,string,Java,String,输入为字符串数组,如下所示 示例日志行: 001 555 3334523 AppName 2341这是一条消息。 001 1224 3334524443 AppSecond 2341这是一条消息blah 341“-*。 022201 55555 333 4523 2341这是另一条消息。 0301 533555 3334523 AppName 2341这是另一条消息 我需要打印其中包含AppName的所有行 这就是我尝试过的 public static void findArrayStrin

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

示例日志行: 001 555 3334523 AppName 2341这是一条消息。 001 1224 3334524443 AppSecond 2341这是一条消息blah 341“-*。 022201 55555 333 4523 2341这是另一条消息。 0301 533555 3334523 AppName 2341这是另一条消息

我需要打印其中包含AppName的所有行

这就是我尝试过的

  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)
公共静态void findArrayString(字符串[]输入,字符串项)
{
for(int i=0;i
谁能告诉我哪里出了问题

  List<String> chr = new ArrayList<>();
  chr = Arrays.asList(input[i]);
尝试查找
chr
i
th元素。由于只有一个元素,因此当
i
>0时会引发异常

不需要中间列表-在循环中尝试以下操作:

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

您正在使用一个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]);
              }
            }      
        }
      }
公共静态void findArrayString(字符串[]输入,字符串项)
{
for(int i=0;i
class Solution
{
  public static void main(String[] args)
  {
    String s = "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.";
    
    String[] str = s.split("\\.");
    for(String st : str)
    {
      if(st.contains("AppName"))
      {
      System.out.println(st);
      }
    }
    
  }
  
}

使用中间列表而不是直接搜索数组有什么原因吗?
class Solution
{
  public static void main(String[] args)
  {
    String s = "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.";
    
    String[] str = s.split("\\.");
    for(String st : str)
    {
      if(st.contains("AppName"))
      {
      System.out.println(st);
      }
    }
    
  }
  
}