1

我试图在一个字符串中的一个数组列表中找到一个子字符串,但我无法让它工作。它必须遍历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);
    }
}

非常感谢您对这项工作的任何帮助:) 谢谢!

4

7 回答 7

1

采用

while (contains == false)

反而

while (contains = false)

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

于 2013-05-30T07:02:03.697 回答
1

避免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);
}
于 2013-05-30T07:07:51.860 回答
0

您的 while 循环条件错误将其更改为while ( contains == false )

于 2013-05-30T07:02:57.927 回答
0

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

while (contains == false) //checking equality


while (contains = false) //assigning
于 2013-05-30T07:03:59.013 回答
0

你可以使用

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;
    }
}
于 2013-05-30T07:07:52.837 回答
0

您的内部 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);
}
于 2013-05-30T07:13:42.800 回答
0

它可能有用

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;


    }
于 2013-05-30T07:17:53.273 回答