Как продолжить цикл после остановки java

Я новичок в java. Мне дали задание провести проверку. Основываясь на этой таблице, которую я сохранил в arraylist. Мой Arraylist имеет форму 2d.

WEEK 1| SUN  | WD | AV | MON  | -  | -  | TUE  | WD | AV  | ...
WEEK 2| SUN  | -  | -  | MON  | WD | AV | TUE  | WD | AV  | ...

WD: РАБОЧИЙ ДЕНЬ средний: ДОСТУПНО

Я должен проверить, все ли WD и AV действительны. но теперь у меня проблема с зацикливанием.

Моя проблема в том, что когда итератор нашел строку «WD», а результат условия - ИСТИНА, мой цикл остановится на этом. Я хочу, чтобы он продолжал итерацию для поиска следующего «WD», который содержится в той же строке, а также для продолжения следующей строки, чтобы продолжить выполнение проверки. все мои данные имеют тип String.

           for (int t = 0; t < al.size(); t++) {

                    if (al.contains("WD")) {
                         continue;
                        if (condtion) {
                          }else if (condtion) {
                           continue;
                          }else if (condition) {
                            continue;
                          }else if (condition) {
                            continue;
                         }else {
                           System.out.println("invalid data");
                            continue;
                             }
                     }
                }

Не могли бы вы помочь мне объяснить, почему мой код не работает так, как я хочу? Извините за мой английский.

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

daniu 27.10.2018 16:15

@daniu, как я объяснил в описании, я хочу, чтобы мой итератор продолжил работу для следующего «WD», который содержится внутри моего массива, если условие истинно, а если ложно, он напечатает «недопустимые данные» и снова продолжит цикл.

furious78 27.10.2018 16:22

Я думаю, вам следует проверить каждый элемент в списке, а не весь список. Если в списке только один «WD», первое условие всегда истинно, а «else» никогда не используется. Проверьте мой ответ.

TranNgocKhoa 27.10.2018 16:24

Не очень понятно, что вы на самом деле сохранили в списке (ах) массивов, вы говорите, что это 2D, поэтому я предполагаю, что это список списков? Внешний содержит недели, а внутренний - неделя данных, это правильно и каков формат данных во внутреннем списке?

Joakim Danielson 27.10.2018 16:35

Привет, @JoakimDanielson, как я уже сказал, все мои данные имеют тип данных String. Эта таблица - образец данных моего архивалиста.

furious78 27.10.2018 16:43

Да, я понимаю, что это строки, но что содержит каждый элемент в списке массивов, это вся строка из вашей таблицы WEEK 1| SUN | WD | AV... в одном элементе или строка как-то разделена?

Joakim Danielson 27.10.2018 16:45

эй @JoakimDanielson, это разделенная строка. неделя 1 находится в первой строке, содержащей все дни, затем продолжайте со второй строки, повторяя те же данные. Кстати, эта проблема решена. :)

furious78 27.10.2018 17:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, вам следует проверить каждый элемент в списке массивов. Нравится:

if (al.get(t).contains("WD"))

Думаю, решение.

    for (int t = 0; t < al.size(); t++) {
     if (al.get(t).contains("WD")) {
      continue;
       } 
      else {
       System.out.println("invalid data");
       continue;
      }
     }
    }

В своем решении вы проверили весь список. Это означает, что если в списке только один «WD», первое условие всегда истинно, а «else» никогда не достигается.

ваш код работает хорошо и соответствует моим потребностям. Спасибо, сэр, хорошего дня

furious78 27.10.2018 17:07
for (int t = 0; t < al.size(); t++) {

                    if (al.contains("WD")) {
                         continue; // using continue keyword causes the loop to skip an iteration.
                        if (condtion) {
                          }else if (condtion) {
                           continue;
                          }else if (condition) {
                            continue;
                          }else if (condition) {
                            continue;
                         }else {
                           System.out.println("invalid data");
                            continue;
                             }
                     }
                }

поскольку вы использовали ключевое слово continue, текущая итерация пропускается. удалить continue (тогда код под условием if проверки для 'WD' будет выполнен, когда оно истинно)

Другие вопросы по теме