2013-05-30 49 views
1

我想在一个数组中找到一个字符串中的子串,但我无法让它工作。 它必须遍历arraylist直到找到子字符串,然后停止。Java - 在数组中搜索子串

这里是我迄今为止

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); 
    } 
} 

在得到这个工作的任何帮助,将不胜感激:) 谢谢!

+0

不要使用,同时,打破了循环时'constains'是真实的。 –

回答

0

你内心的循环不断滚动 - 即便它会找到子字符串的别名。

您需要在找到匹配项时终止循环。这是一个天真的,但正确的执行

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); 
} 
+0

这很完美,谢谢! – user2427023

1

使用

while (contains == false) 

代替

while (contains = false) 

=是一个赋值运算符和==是比较操作符。您正在为while循环中的contains指定false。你要比较这两个值

0

while循环的条件是错误的改变while (contains == false)

0

你试图分配一个值there.you需要检查的值等于或不

while (contains == false) //checking equality 


while (contains = false) //assigning 
1

避免while循环。使用break语句。如果不小心,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); 
} 
+0

+1击败我吧! – MadProgrammer

0

你可以使用

while (!contains) {...} 

但它可能是更容易简单地丢弃while环和breakfor

for (int i = 0; i < clubList.size(); i++){ 
    string = clubList.get(i).aliases; 
    contains = string.contains(subString); 
    if (contains) { 
     break; 
    } 
} 
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; 


    }