Добрый день! Код написал, но свое решение не проходило проверку. Потом подсмотрел как другие делали, и вот где подсмотрел, там и не понял до конца как код работает :(
Допустим у нас список из трех слов:
{"собака", "кошка", "попугай"}
-----------------------------------------
public static ArrayList<String> doubleValues(ArrayList<String> list) {
for (int i = 0; i < list.size(); i++){ // Бегаем по списку, пока значение переменной i меньше длины массива. Здесь как я понимаю, уже в 0 индекс записалось слово "собака"
list.add(i, list.get(i)); // Тут в начало списка мы добавляем полученное текущее значение i - первое слово в первой итерации ("собака"), то есть 2 слово "собака". И у нас уже 2 слова "собака" есть.
i++; // Вопрос: зачем мы пишем i++
}
return list;
Потом то же самое для "кошка" и "попугай".
Не ругайте сильно, если глупости пишу или очевидные вещи, просто хочу разобраться.
Анатолий
28 уровень
Задачу решил, но вопрос остался :(
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
АлександрExpert
12 мая 2019, 12:43решение
Мб не совсем правильно понял суть вопроса, но i++ в данном случае пишется т.к. при добавлении слова в список по индексу например 0, слово которое в данным момент записано под этим индексом сдвигается дальше на один индекс т.е. на i = 1. и при стандартном шаге в 1 (i++) ты снова попадешь на тоже слово и будешь его добавлять постоянно, а дополнительный i++ в теле цикла позволяет тебе перешагнуть это слово и перейти к следующему под индексом 2. В данной задаче мб имеет смысл сделать шаг в 2 (i += 2) или как делал я идти с конца списка (for (int i = list.size() - 1; i >=0; i--) - тогда этой проблемы не возникает т.к. при обратном порядке тебя уже не интересует что происходит в конце списка.
+2
Анатолий
12 мая 2019, 13:14
Спасибо большое за ответ и другой вариант решения. Попробую переписать код с постфиксным декрементом и пройтись с конца списка. Посмотрю как получиться в этом случае :)
0