【问题标题】:Java - search for substring in arrayJava - 在数组中搜索子字符串
【发布时间】:2013-05-25 15:46:21
【问题描述】:

我试图在一个字符串中的一个数组列表中找到一个子字符串,但我无法让它工作。 它必须循环遍历arraylist,直到找到子字符串,然后停止。

这是我目前所拥有的

    private static void teamSearch(String teamName) {

    String subString = teamName;
    String string = "";
    boolean contains = false;

    while (contains = false){
    for (int i = 0; i < clubList.size(); i++){
        string = clubList.get(i).aliases;
        contains = string.contains(subString);
    }
    System.out.println(contains);
    }
}

非常感谢任何帮助完成这项工作:) 谢谢!

【问题讨论】:

  • 不要使用while,当constains为真时打破for循环。

标签: java arrays search substring


【解决方案1】:

使用

while (contains == false)

改为

while (contains = false)

= 是赋值运算符,== 是比较运算符。您正在将 false 分配给 while 循环中的 contains。您必须比较值

【讨论】:

    【解决方案2】:

    你的while循环条件错误,改成while ( contains == false )

    【讨论】:

      【解决方案3】:

      您正在尝试在那里分配一个值。您需要检查该值是否相等

      while (contains == false) //checking equality
      
      
      while (contains = false) //assigning
      

      【讨论】:

        【解决方案4】:

        避免while循环。使用中断语句。如果不小心,while 循环会导致无限循环。

        private static void teamSearch(String teamName) {
            String subString = teamName;
            String string = "";
            boolean contains = false;
        
            for (int i = 0; i < clubList.size(); i++){
                string = clubList.get(i).aliases;
                if (string.contains(subString)) {
                   contains = true; 
                   break;
                }
            }
            System.out.println(contains);
        }
        

        【讨论】:

          【解决方案5】:

          你可以使用

          while (!contains) {...}
          

          但简单地删除 while 循环和 break for 循环可能更容易

          for (int i = 0; i < clubList.size(); i++){
              string = clubList.get(i).aliases;
              contains = string.contains(subString);
              if (contains) {
                  break;
              }
          }
          

          【讨论】:

            【解决方案6】:

            您的内部 for 循环继续滚动 - 即使它找到带有子字符串的别名。

            您需要在找到匹配项时终止循环。这是一个幼稚但正确的实现

            private static void teamSearch(String teamName) {
            
                String subString = teamName;
                String string = "";
                boolean contains = false;
            
                for (int i = 0; i < clubList.size(); i++){
                    string = clubList.get(i).aliases;
                    if (string.contains(subString){ 
                      contains = true;
                      break;
                    } 
                }
                System.out.println(contains);
            }
            

            【讨论】:

              【解决方案7】:

              可能有用

              boolean flag = false;
              
                  String subString = "nice";
              
              
                  ArrayList<String> arrayList = new ArrayList<String>(2);
              
              
                  arrayList.add("good morning");
              
              
                  arrayList.add("that is nice");
              
              
                  for (String element : arrayList) {
              
              
                      if (element.contains(subString))
              
              
                          flag = true;
              
              
                      else
              
              
                          flag = false;
              
              
                  }
              

              【讨论】:

                猜你喜欢
                • 2011-07-04
                • 2012-04-10
                • 2018-06-23
                • 2016-11-15
                • 2018-11-28
                • 2022-01-23
                • 1970-01-01
                • 2013-01-09
                • 1970-01-01
                相关资源
                最近更新 更多