Java содержит () для моего arraylist не работает в цикле - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть Arraylist, и я хочу проверить, есть ли у Arraylist определенная строка. Я обнаружил, что .contains () может сделать свое дело. Но когда я запускаю его в al oop, чтобы проверить слово «бот» в массиве. Результаты также включают "chatbot" и "robot" как "бот", что не является желаемым результатом. Но если я делаю это без l oop, он работает просто отлично, чего я не понимаю почему.

Код:

// Java code to demonstrate the working of 
// contains() method in ArrayList of string 

// for ArrayList functions 
import java.util.ArrayList; 

public class test { 
    public static void main(String[] args) 
    { 

        // creating an Empty String ArrayList 
        ArrayList<String> arr = new ArrayList<String>(4); 
        ArrayList<String> arr2 = new ArrayList<String>(4);

        // using add() to initialize values 
        arr.add("chatbot"); 
        arr.add("robot"); 
        arr.add("bot"); 
        arr.add("lala"); 

        // use contains() to check if the element 
        for (int i=0;i<arr.size();i++){
            boolean ans = arr.get(i).contains("bot"); 
            if (ans) {System.out.println("1: The list contains bot"); }
            else
                {System.out.println("1: The list does not contains bot");}
        }

        System.out.println();

        for (String str : arr) {
        if (str.toLowerCase().contains("bot")) {
            System.out.println("2: The list contains bot");;
        }
        else
            {System.out.println("2: The list does not contains bot");}
        }


        // use contains() to check if the element 
        System.out.println();
        arr2.add("robot");
        boolean ans = arr2.contains("bot"); 

        if (ans) 
            System.out.println("3: The list contains bot"); 
        else
            System.out.println("3: The list does not contains bot"); 
    } 
} 

Результат:

1: The list contains bot
1: The list contains bot
1: The list contains bot
1: The list does not contains bot

2: The list contains bot
2: The list contains bot
2: The list contains bot
2: The list does not contains bot

3: The list does not contains bot

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

Вы в основном проверяете, содержит ли arraylist arr2 слово «bot», которого нет. Вы должны проверить, содержит ли первый элемент слово. arr2 [0] .Contains ( "боты")

2 голосов
/ 04 февраля 2020

Используйте .equals вместо .contains, если вы хотите сопоставить только точную строку:

public static void main(String s[]) {
        test.add("bot");
        test.add("ibot");
        test.add("abot");
        String str = "bot";

        for(int i=0;i<test.size();i++) {
            if(str.equals(test.get(i))) {
                System.out.println("True");
            }
            else {
                System.out.println("False");
            }
        }
    }
...