EDIT: OK, извините за не столь ясный вопрос. Давайте попробуем другим способом: У нас есть ArayList имен: Peter, John, AdamКак НЕ найти что-то в JAVA?
Мы ищем имя String; Если ArrayList содержит строку, мы хотим написать String. Если ArrayList не содержит String, мы хотим добавить String в ArrayList.
Если я ищу «Адам», то эта программа не работает, потому что сначала она находит имя «Петр», затем «Джон», и только после этого находит «Адама». Так что в первые 2 раза он думает: «Адам» не входит в список и действует так.
String findName;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().contains(findName)) {
System.out.println(findName);
break;
}
else
arrayList.add(findString);
}
Оригинальный вопрос:
У меня есть строки и Array (ArrayList). Я должен что-то сделать, если String находится в массиве и что-то еще, если оно не находится в массиве. Как мне это сделать? я не могу сделать это так:
String myString;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().equals(myString)) {
DO SOMETHING;
break;
}
else
DO SOMETHING ELSE;
}
, потому что он найдет строку только один раз, и все остальное время он будет действовать, как и ArrayList не содержит строку.
Так я делаю это так:
String findString = "0";
String myString;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().equals(myString)) {
DO SOMETHING;
findString = "2"; //when I find the String, I change this
break;
}
if findString == "0"; //if I have not found the String, this happens
DO SOMETHING ELSE;
}
и у меня есть чувство, оно должно быть не сделано, как это. ;)
Я знаю, что вместо этого можно использовать булевы, но это то же самое по-другому. Разве нет общего способа сделать это правильно?
Удалите оператор разрыва –
'Equals (String)' вместо '' == – Andrew
Вы хотите сделать «сделать что-то» для каждого матча в массиве? Если это так, то вы НЕ МОЖЕТ 'ломаться', потому что break завершит цикл. И вы не можете выполнить «что-то еще», пока ПОСЛЕ цикла не закончится, потому что вы никогда не узнаете, появится ли строка позже в цикле или нет. например вы в основном делаете «я что-то преодолел в машине за последние 30 секунд?» «Нет, хорошо. Я, вероятно, больше не буду работать над чем-либо еще в ближайшие 10 часов». –