Для цикла с string.split для массива, перерыв после выполнения условия - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь разорвать цикл for и выполнить функцию только один раз после выполнения одного из текстов (условий) строки.

Я пробовал с разрывом, пробовал множество других методов, но я не смог заставить его работать, если выполняются условия цикла for и т. Д.


static void show(@NonNull Context context, @NonNull Arri<Mylist> notification) {

            ....

        String strings = "text1,text2,text3,text4,...";
        String[] stringarray = strings.split(",");

        for(String name : stringarray){
            notifyMe(name, notification);
        }

    private static void notifyMe(String text, @NonNull Arri<Mylist> notification) {
        if (notification.loadr().project().toString().toLowerCase().contains(text.toLowerCase())) {
            Log.d("TAG", "contains:" + text);
        } else {
            Log.e("TAG", "doesnt contain:" + text);
        }
    }

В данный момент он выполняется конечно больше раз, но мне нужно только один раз, чтобы выполнить функцию. Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

0 голосов
/ 08 мая 2019

Я нашел решение для моей проблемы, если оно кому-нибудь понадобится, вот оно. Если есть какие-либо лучшие методы, не стесняйтесь писать.

static void show(@NonNull Context context, @NonNull Arri<Mylist> notification) {

            ....

        String strings = "text1,text2,text3,text4,...";
        String[] stringarray = strings.split(",");

        for(String name : stringarray){
          if (notifyMe(name, notification)) {
               break;
            }
        }
    }

    private static boolean notifyMe(String text, @NonNull Arri<Mylist> notification) {
        if (notification.loadr().project().toString().toLowerCase().contains(text.toLowerCase())) {
            return true;
        }
        return false;
    }
0 голосов
/ 07 мая 2019

Просто используйте оператор break, если вы хотите разорвать цикл, когда ваше условие выполнено:

public void breakIt(){
    String stringToSplit = "text1,text2,text3";
    String[] strings = stringToSplit.split(",");
    String condition = "text2";

    for (String s : strings){
        if (s.equals(condition)) {
            System.out.println(s);
            break;
        }
    }

}

Вы также можете использовать return, чтобы «выйти» из цикла.См. Дополнительную информацию о различиях между return и break: разрыв по сравнению с возвратом

0 голосов
/ 07 мая 2019

Получите ваше условие и удалите его из notifyMe и поместите в цикл for или используйте логический ответ для этого и оцените цикл for.В противном случае вы не сможете остановить этот цикл.

0 голосов
/ 07 мая 2019

Вы можете позвонить notifyMe внутри if:

for (String name : stringArray) {
    if (someLogic(name)) {
        notifyMe(name, notification);
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...