Я новичок в 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, как я объяснил в описании, я хочу, чтобы мой итератор продолжил работу для следующего «WD», который содержится внутри моего массива, если условие истинно, а если ложно, он напечатает «недопустимые данные» и снова продолжит цикл.
Я думаю, вам следует проверить каждый элемент в списке, а не весь список. Если в списке только один «WD», первое условие всегда истинно, а «else» никогда не используется. Проверьте мой ответ.
Не очень понятно, что вы на самом деле сохранили в списке (ах) массивов, вы говорите, что это 2D, поэтому я предполагаю, что это список списков? Внешний содержит недели, а внутренний - неделя данных, это правильно и каков формат данных во внутреннем списке?
Привет, @JoakimDanielson, как я уже сказал, все мои данные имеют тип данных String. Эта таблица - образец данных моего архивалиста.
Да, я понимаю, что это строки, но что содержит каждый элемент в списке массивов, это вся строка из вашей таблицы WEEK 1| SUN | WD | AV...
в одном элементе или строка как-то разделена?
эй @JoakimDanielson, это разделенная строка. неделя 1 находится в первой строке, содержащей все дни, затем продолжайте со второй строки, повторяя те же данные. Кстати, эта проблема решена. :)
Я думаю, вам следует проверить каждый элемент в списке массивов. Нравится:
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» никогда не достигается.
ваш код работает хорошо и соответствует моим потребностям. Спасибо, сэр, хорошего дня
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' будет выполнен, когда оно истинно)
Ваш код не будет компилироваться и не содержит достаточно информации, чтобы понять, что именно должно произойти. Пожалуйста, предоставьте минимальный воспроизводимый пример.