2013-05-30 8 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) 

= является оператором правопреемником и == является оператором Comparision. вы назначаете false для содержимого в цикле while. Вы должны сравнить значения

0

ваше время условие цикла является неправильное изменение его while (contains == false)

0

вы пытаетесь присвоить значение there.you нужно проверить значение, равное или не

while (contains == false) //checking equality 


while (contains = false) //assigning 
1

Избегайте в то время как цикл. Используйте оператор break. Если не осторожно, в то время как петли могут вызывать бесконечные петли.

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 и break в for петлю

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; 


    } 
Смежные вопросы