1. При считывании строк необходимо указать строгое количество итераций в цикле. Если написать i < list.size(), то программа завершается сразу после запуска. Почему это происходит и как быть, если мы не знаем сколько строк будет введено? 2. Почему мы не получаем бесконечный цикл в методе doubleValues, если i < list.size(), а мы в list с каждой итерацией добавляем новый элемент?
public class Solution {
    public static void main(String[] args) throws Exception {
        // Считать строки с консоли и объявить ArrayList list тут
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < list.size(); i++){
            String s = reader.readLine();
            list.add(s);
        }

        ArrayList<String> result = doubleValues(list);
        for (int i = 0; i < list.size(); i++){
            System.out.println(list.get(i));
        }
        // Вывести на экран result
    }

    public static ArrayList<String> doubleValues(ArrayList<String> list) {
        //напишите тут ваш код
        for (int i = 0; i < list.size(); i++){
            String x = list.get(i);
            list.add(i, x);
            i++;
        }
        return list;
    }
}