Удваиваем слова

  • 5
  • Недоступна
Пишем программу-эхо. Она удваивает всё, что слышит. Вернее всё, что попало в список из 10 строк. Для этого в программе-эхо создаем, собственно список из 10 слов (вводим с клавиатуры строки и заносим их в список) и метод doubleValues, который, собственно, удваивает слова по определенному принципу. Результат эхо выводим на экран. Ничего сложного.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (266)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Richard Zorge8 уровень, Улан-Удэ
12 июля, 15:34
уже 58758 решили сдуваются?
max8 уровень
11 июля, 09:47
public static ArrayList<String> doubleValues(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            if(i%2==0){
                list.set(i, list.get(i+1));
            }
        }
        return list;
    }
Имея вот такую концовку программа верно отрабатывает, но третий пункт не засчитывает, почему не понимаю. Кто самый умный? И валидатор в совете об ошибке просит, чтобы метод
doubleValues
работал со списками не только для 10 строк, а для любого количества строк. Во вставленном куске всё так и есть. Оно считает не до 10, а по размеру списка. Странно.
Лис8 уровень, Могилёв
26 июля, 18:04
Set() заменяет значения. То есть вместо a b c d e g i y t q ---> aa bb cc dd ee gg ii yy tt qq , получилось a b c d e g i y t q ---> a cc ee ii tt q. Или нет?
Morris7 уровень, Санкт-Петербург
3 июля, 11:41
Объясните пожалуйста, как это работает?
for (int i = 0; i < list.size(); i += 2) {
    list.add(i, list.get(i));
}
И почему если я допустим исправлю на
list.add(i + 1, list.get(i));
То результат будет тот же самый
Dator23 уровень, Киев
26 июня, 21:27
Работает, но не кушает его валидатор.
list.addAll(list);
        Collections.sort(list);
        return list;
Сергей12 уровень, Санкт-Петербург
15 июня, 20:46
подскажите пожалуйста почему в итераторе в doubleValues прибавляем 2? Я по сталински написал ++, не компилировалось. полез в комментарии, поставил +=2 все свершилось. а почему итератор +2? в смысле что он перепрыгивает новосозданную строчку-дубликат?
Максим Дудин9 уровень, Калининград
27 июня, 18:44
да так и есть
Mihail Klimenko9 уровень, Краснодар
20 мая, 12:10
после прошлой задачи решение проблем не доставило :) Сначала нужно навести порядок в готовом коде, потом объявить новый список строк с правильным именем, заполнить его через цикл for(). Дальше в методе doubleValues() нужно удвоить каждый элемент начального массива. Делается это добавлением нового элемента, который копируется с текущего. Копирование происходит так: сначала сдвигается в право оригинальный элемент (который нужно скопировать), освобождая место для нового элемента. Данные для нового элемента уже нужно брать с соседней клетки массива list.add(i, list.get(i++));
Ivan18 уровень, Череповец
27 мая, 10:36
Немного по-другому пошёл. В методе doubleValues() объявил переменную result и сразу же создал список с загрузкой первого списка (new ArrayList<>(list) - это подсказала IDEA). Далее прошёлся for-ом по result, добавляя каждую его строку по индексу + 1, не забывая увеличивать i в цикле.
Максим Дудин9 уровень, Калининград
27 июня, 18:44
тоже самое
Руслан9 уровень, Ташкент
15 мая, 14:46
Создаём массивв
ArrayList<String> list = new ArrayList<>();
Добавляем через цикл for в него 10 строк. В методе doubleValues обходим строки через цикл for, в конце прибавляем +2 в момент прохода добавляем текущую строку то бишь индекс с цикла i их теперь две, все остальные строки в массиве сместились на +1 поэтому в цикле у нас +2
list.add(i,list.get(i));
Потом просто выводим)
Андрей12 уровень, Москва
12 мая, 18:01
не знаю для кого задача простая была, но попотеть пришлось хз сколько часов, в выводах были и бесконечные циклы и неверные индексы и импорт (ниже) веселуха))) мой вариант удваивания:
for(int i = 0 ; i < list.size(); i+=2){
     if(i == 20) {break;}
     list.add(i+1, list.get(i));
}
Azamat Abdilov9 уровень
15 мая, 16:05
Подскажите пожалуйста что это за зверь такой? Уже вторая задача выходит. i+=2 list.add(i+1, list.get(i));
Андрей12 уровень, Москва
15 мая, 18:29
смотри,
i+=2;
означает, что
i = i + 2;
() то есть значению i слева от "=" присваиваешь то что справа от "=" что касается list.add(i+1, list.get(i)); list.add(index, element); index = i+1; (в цикле for меняешь i) element = list.get(i); короче читай про ArrayList
Azamat Abdilov9 уровень
16 мая, 14:38
Спасибо, Андрей!
Stirlitz8 уровень, Харьков
2 мая, 15:21
Случайно скопировал импорты с редактора, а там затесался импорт IOException, так валидатор мне постоянно фейлил первое условие. Боль
Юрий Лубенченко17 уровень, Киев
7 мая, 18:12
Прямо бог послал тебя в комменты под этой задачей)) тоже первый пункт не проходил и похожая проблема в импорте
Андрей12 уровень, Москва
12 мая, 17:15
import java.io.IOException;
если быть точнее, в задаче (не проходящее)
import java.util.IOException;
Илья11 уровень, Дзержинск
2 мая, 08:26
Кстати всё норм решается и без этой строчки ArrayList<String> result = doubleValues(list);