При работе этого кода возникает IndexOutOfBoundsException, хотя индекс никак не может выходить за пределы arrayList:
public def file = new File('file.txt')
ArrayList<String> array = new ArrayList<String>()
int w= 0;
file.eachLine{String line -> line.tokenize().each { String word -> if(word.startsWith('qwerty')){array.add(word); array.set(w++, array.get(w++).replaceAll("qwerty", ""))}}};
А вот этот код правильно срабатывает:
file.eachLine{String line -> line.tokenize().each { String word -> if(word.startsWith('qwerty'))array.add(word)}};
for (int i = 0; i < array.size(); i++){
array.set(i, array.get(i).replaceAll("qwerty", ""))
}
Помогите разобраться, может так вообще нельзя поступать, как в первом примере?
Первый индекс массива = 0, значение w = 0 при инициализации, а при первом обращении w++, то есть 1 и далее с опережением индексов на 1.
Видимо проще всего решить, указав начально значение w = -1.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости