Java - пошук падрадка ў масіве

Я спрабую знайсці падрадок ўнутры радка, у якасці ArrayList, але я не магу прымусіць яго працаваць. Яна павінна цыкл праз 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);
    }
}

Любая дапамога ў атрыманні гэтай працы будзе высока цэняцца :) Дзякуй!

1
Не выкарыстоўвайце час, разарваць цыкл, калі constains дакладна.
дададзена аўтар Bhesh Gurung, крыніца

7 адказы

выкарыстанне

while (contains == false)

замест

while (contains = false)

= is an assign operator and == is comparision operator. you are assigning false to contains in while loop. You have to compare the values

1
дададзена

Пазбягайце час цыклу. Выкарыстоўвайце заяву перапынку. Калі не будзеце асцярожныя, у той час як завесы могуць выклікаць бясконцыя цыклы.

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);
}
1
дададзена
+1 біць мяне да яго!
дададзена аўтар MadProgrammer, крыніца

Вы спрабуеце прысвоіць значэнне there.you трэба праверыць значэнне, роўнае або няма

while (contains == false) //checking equality


while (contains = false) //assigning
0
дададзена

гэта можа быць карысна

boolean flag = false;

    String subString = "nice";


    ArrayList arrayList = new ArrayList(2);


    arrayList.add("good morning");


    arrayList.add("that is nice");


    for (String element : arrayList) {


        if (element.contains(subString))


            flag = true;


        else


            flag = false;


    }
0
дададзена

Вы можаце выкарыстоўваць

while (!contains) {...}

Але гэта можа быць прасцей проста выпусціць , а завесы і разрыву клавішы для пятля

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

Your while loop condition is wrong change it to while ( contains == false )

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, крыніца