Добро пожаловать

Ресурс, посвященный проекту JavaRush.

ПО всем вопросам можно писать на support{собака}javarush.ru.

Обсуждение задач
UPD: Вся активность этого блога переехала на help.javarush.ru. Все вопросы по задачам задавайте там.
Перед тем, как создавать топик или комментарий, прочитайте это.

Обсуждение лекций — тут находятся топики с дополнительной информацией по каждой лекции из курса. Новые топики в этом блоге создавать нельзя. В комментариях к лекциям можно обсуждать сами лекции (и добавлять полезные ссылки по соответствующей теме).

Отзывы — не проходите мимо. Тут вы можете оставить свои отзывы о проекте JavaRush.

Помощь по IntelliJ Idea — тут размещены разнообразные подсказки, видео и ссылки по работе с лучшей IDE для работы с Java.

ЧАВО — самые часто задаваемые вопросы и ответы на них.

План учебного курса — подробный план по уровням курса JavaRush. Тут вы можете узнать, чему именно вы сможете обучиться, какие навыки приобрести.

Инструкции по работе с JavaRush — тут вы узнаете, как правильно пользоваться обучающим курсом, как эффективнее учиться, как правильно задавать вопросы или искать самим на них ответы…

P.S. Еще создана тема для формирования вопросов для Faq по проекту. Присоединяйтесь к формированию вопросов.
  • ,

task24.task2413(7), Баг валидатора? Прошу помочь.

Добрый день. Прошу помощи упёрся в задание арканоид(7) вроде всё правильно, но валидатор выдаёт нечто непонятное.
Задание:
Арканоид(7)
Теперь перейдем к классу BaseObject.
Я хочу сделать несколько предложений.
Во-первых для простоты считать все объекты у нас будут круглыми.
Нет, отрисовывать их мы будем фигурными, как и раньше.
А вот при расчетах из взаимодействия исходить из того, что они круглые.
Так — гораздо проще.
Во-вторых. Пусть координаты объектов и радиус будут вещественными числами.
Это придаст плавность движениям и точность всем вычислениям.
А при отрисовке мы будем их округлять.
Итак:
а) Добавь в класс BaseObject приватные поля x (double), y (double), radius (double).
б) Добавь геттеры и сеттеры.
в) Добавь конструктор BaseObject(double x, double y, double radius).
г) Пройдись по все классам-наследникам и поправь у них конструкторы.
Если вы пользуйтесь Intellij IDEA — Alt+Insert вам в помощь.

Требования:
1. В классе BaseObject должно быть создано приватное поле x типа double.
2. В классе BaseObject должно быть создано приватное поле y типа double.
3. В классе BaseObject должно быть создано приватное поле radius типа double.
4. В классе BaseObject должен быть создан корректно работающий конструктор с тремя параметрами типа double (x, y, radius).
5. В классе Ball должен быть создан корректно работающий конструктор с тремя параметрами типа double (x, y, radius).
6. В классе Brick должен быть создан корректно работающий конструктор с тремя параметрами типа double (x, y, radius).
7. В классе Stand должен быть создан корректно работающий конструктор с тремя параметрами типа double (x, y, radius).
8. В классе BaseObject должен быть создан публичный геттер для поля x.
9. В классе BaseObject должен быть создан публичный геттер для поля y.
10. В классе BaseObject должен быть создан публичный геттер для поля radius.
11. В классе BaseObject должен быть создан публичный сеттер для поля x.
12. В классе BaseObject должен быть создан публичный сеттер для поля y.
13. В классе BaseObject должен быть создан публичный сеттер для поля radius.

package com.javarush.task.task24.task2413;

/**
 * Created by Женя on 22.06.2017.
 */
public abstract class BaseObject {
    private double x;
    private double y;
    private double radius;

    abstract void draw(Canvas canvas);

    abstract void move();

    public BaseObject(double x, double y, double radius) {
        this.x = x;
        this.y = y;
        this.radius = radius;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public double getRadius() {
        return radius;
    }

    public void setX(double x) {
        this.x = x;
    }

    public void setY(double y) {
        this.y = y;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
}


результат тестирования: В классе BaseObject должен быть создан корректно работающий конструктор с тремя параметрами типа double (x, y, radius).На мой взгляд всё в соответствии с заданием. Подскажите что не так.

task40.task4008 | level40.lesson40.task02 - РЕШЕНО

Не могу пройти валидацию. Одно требование я выполнил, из тех, что не проходили, но ещё два — никак. Уже не знаю, что делать.

Вот условие задачи:

Работа с Java 8 DateTime API
Выполни задание, используя Java 8 DateTime API.
Реализуй метод printDate(String date).
Он должен в качестве параметра принимать дату (в одном из 3х форматов)
и выводить ее в консоль в соответствии с примером:
1) Для «21.4.2014 15:56:45» вывод должен быть:
День: 21
День недели: 1
День месяца: 21
День года: 111
Неделя месяца: 4
Неделя года: 17
Месяц: 4
Год: 2014
AM или PM: PM
Часы: 3
Часы дня: 15
Минуты: 56
Секунды: 45
2) Для «21.4.2014»:
День: 21
День недели: 1
День месяца: 21
День года: 111
Неделя месяца: 4
Неделя года: 17
Месяц: 4
Год: 2014
3) Для «17:33:40»:
AM или PM: PM
Часы: 5
Часы дня: 17
Минуты: 33
Секунды: 40

А вот мой код:

public static void printDate(String date) {
            //напишите тут ваш код
            if (date == null || (date != null && date.isEmpty()))
                return;
            try {
                LocalDate localDate = LocalDate.parse(date,DateTimeFormatter.ofPattern("d.M.u"));
                System.out.println("День: " + localDate.get(ChronoField.DAY_OF_MONTH));
                System.out.println("День недели: " + localDate.getDayOfWeek().getValue());
                System.out.println("День месяца: " + localDate.getDayOfMonth());
                System.out.println("День года: " + localDate.getDayOfYear());
                System.out.println("Неделя месяца:  " + localDate.format(DateTimeFormatter.ofPattern("W")) /*+ " " +  (localDate.get(ChronoField.ALIGNED_WEEK_OF_MONTH) + 1 )*/);
                System.out.println("Неделя года: " + (localDate.get(ChronoField.ALIGNED_WEEK_OF_YEAR) + 1));
                System.out.println("Месяц: " + localDate.getMonthValue());
                System.out.println("Год: " + localDate.getYear());
                return;
            } catch (DateTimeParseException e) {
            }
            try {
                LocalTime localTime = LocalTime.parse(date,DateTimeFormatter.ofPattern("H:m:s"));
                System.out.println("AM или PM: " + ((localTime.get(ChronoField.AMPM_OF_DAY) == 0)? "AM":"PM"));
                System.out.println("Часы: " + localTime.get(ChronoField.HOUR_OF_AMPM));
                System.out.println("Часы дня: " + localTime.get(ChronoField.HOUR_OF_DAY));
                System.out.println("Минуты: " + localTime.getMinute());
                System.out.println("Секунды: " + localTime.getSecond());
                return;
            } catch (DateTimeParseException e) {
            }
            try {
                LocalDateTime dateTime = LocalDateTime.parse(date,DateTimeFormatter.ofPattern("d.M.u H:m:s"));
                System.out.println("День: " + dateTime.get(ChronoField.DAY_OF_MONTH));
                System.out.println("День недели: " + dateTime.getDayOfWeek().getValue());
                System.out.println("День месяца: " + dateTime.getDayOfMonth());
                System.out.println("День года: " + dateTime.getDayOfYear());
                System.out.println("Неделя месяца:  " + dateTime.format(DateTimeFormatter.ofPattern("W")) /*(dateTime.get(ChronoField.ALIGNED_WEEK_OF_MONTH) + 1 )*/);
                System.out.println("Неделя года: " + (dateTime.get(ChronoField.ALIGNED_WEEK_OF_YEAR) + 1));
                System.out.println("Месяц: " + dateTime.getMonthValue());
                System.out.println("Год: " + dateTime.getYear());
                System.out.println("AM или PM: " + ((dateTime.get(ChronoField.AMPM_OF_DAY) == 0)? "AM":"PM"));
                System.out.println("Часы: " + dateTime.get(ChronoField.HOUR_OF_AMPM));
                System.out.println("Часы дня: " + dateTime.get(ChronoField.CLOCK_HOUR_OF_DAY));
                System.out.println("Минуты: " + dateTime.getMinute());
                System.out.println("Секунды: " + dateTime.getSecond());
                return;
            } catch (DateTimeParseException e) {
            }
        }


Не проходят эти требования:
1. Если в метод printDate передана дата в формате «дата время», он должен вывести: День, День недели, День месяца, День года, Неделя месяца, Неделя года, Месяц, Год, AM или PM, Часы, Часы дня, Минуты, Секунды.
2. Если в метод printDate передана дата в формате «дата», он должен вывести: День, День недели, День месяца, День года, Неделя месяца, Неделя года, Месяц, Год.

А эти — проходят:

3. Если в метод printDate передана дата в формате «время», он должен вывести: AM или PM, Часы, Часы дня, Минуты, Секунды.
4. Используй статический метод parse классов LocalDate и LocalTime.


Сам думаю на вывод дня и вывод номера недели (в месяце). Также может быть что-то в выводе номера недели в году. Но это всё работает. Сравнивал с предыдущей задачей, которая прошла.
  • ,

Онлайн-стажировка: летний набор 2017

Good News, Everyone!
С радостью сообщаем Вам, что сегодня начался очередной набор на онлайн стажировку!

Набором на стажировку буду заниматься я (silent).
javarush.ru/users/717740

У Вас есть уникальная возможность получить опыт в работе с такими технологиями: Git, Spring, Spring MVC, Spring Security, Hibernate, JPA, Junit, JSP, JSTL, ORM, REST, Bootstrap, AJAX и jQuery.
Конечно, за 12 недель слишком глубоко все это не выучить, но, во-первых, Вы сможете указать эти технологии в своем резюме, а во-вторых, очень вероятно, что за эти 12 недель Вы узнаете о программировании больше, чем 5 лет универа. Выбор за Вами.

Записывайтесь, только если сможете уделять обучению 6-8 часов в неделю. Отзывы предыдущих участников можно почитать тут.

Условия участия:
1) Ваш уровень на JavaRush 35 или выше
2) У Вас есть (или была, но закончилась меньше года назад) годовая подписка Internship, Internship+, Mentor или Premium Project. Или у Вас есть активная подписка PREMIUM PRO.
3) Вы выполнили тестовое задание

Если Ваш уровень ниже 35-го, но хотя бы 30+, Вы можете попробовать дойти до 35-го уровня. Набор на онлайн-стажировку будет продолжаться до 5 июля включительно, так что 3 недели у Вас есть.

В новом JavaRush механизм апгрейда подписок не предусмотрен, поэтому если Ваша подписка не предусматривает участие в стажировке, а участвовать Вы хотите, Вам нужно обзавестись подпиской PREMIUM PRO. Если раньше участии в стажировке было возможно лишь с годовой подпиской (Internship, Internship plus и пр.), то сейчас Вы можете оплачивать стажировку помесячно подпиской PREMIUM PRO. Оплату нужно вносить каждый месяц начиная с месяца набора (в данном случае — это июнь) и заканчивая последним месяцем стажировки — сентябрь. Итого выходит 4 месяца оплаты подписки PREMIUM PRO.

Кому будет полезно:
Если в Вашем городе мало крупных компаний, у них высокие требования, или Вы хотите выделиться на фоне других искателей работы и попасть не абы-куда, а сразу в правильное место, то Вам стоит получить практический опыт на онлайн-стажировке.

Онлайн стажировка – это отличный способ получить практический опыт (за Ваши деньги).

Где можно записаться:

Оставьте свои контактные данные в разделе «Стажировка» -> «Отправить заявку». Так же Вам надо прислать ссылку на выполненное тестовое задание. Пример:
Заявка на стажировку

Тестовое задание надо выполнить обязательно. Если Вы не в состоянии справится с тестовым заданием, значит Вам будет не по силам половина заданий онлайн-стажировки. Лучше порешайте задачи на JavaRush – они в разы проще.

Следующая стажировка планируется через 3 месяца – не справились с тестовым заданием в этот раз – значит справитесь в следующий. Лучше хорошо понимать часть материала, чем просто прочитать/просмотреть (но не разобраться) в большом его количестве.

Начиная с прошлого набора на стажировку, Стажировку можно проходить столько раз, сколько Вы хотите. Если вы регистрируетесь на стажировку повторно — тестовое задание отправлять не нужно.

Сроки:
Стажировка длится 12 недель.
Набор открыт до 5 июля включительно, старт самой стажировки – 6 июля.
После 5 июля заявки приниматься не будут – будете ждать следующей стажировки (ориентировочно октябрь 2017 года).

Как все будет происходить:
Вы будете писать достаточно большой проект и получите очень разносторонний опыт, который, что логично, поможет Вам и при устройстве на работу и, уж тем более, в первый год работы.

Проект рассчитан на 12 недель (3 месяца). Каждую неделю Вы будете изучать очередную технологию и добавлять очередной кусок функциональности к Вашему проекту.

План обучения и список изучаемых технологий можно посмотреть здесь.

Формат занятий
В начале каждой недели Вы будете получать видеозапись урока (длиной 2-3 часа!), на которой разбирается и объясняется очередная технология, а также дается задание на дом, которое Вы должны сделать за неделю. Задания средней сложности. Если в первый день вы во всем разобрались, то сделайте его за 1-2 дня. Если сразу не поняли, то в неделю должны вложиться.

Правильное решение
Через неделю куратор стажировки выкладывает свое решение, и Вы можете посмотреть/разобрать его, независимо от того, заработало у Вас Ваше решение или нет.
Это очень эффективный подход, т.к. разбирать решения опытных разработчиков может быть на порядок полезнее, чем сделать свое кое-как. Особенно, если Вы только что днями ломали голову, ища способ все сделать хорошо, быстро и красиво.

Поддержка
В слаке будет создана отдельная группа, где Вы и другие участники стажировки в режиме реального времени можете задавать вопросы и получать ответы от руководителя стажировки. Он может давать комментарии по изучаемой технологии, по своему решению и по своему коду. Но не по Вашему коду.

Процесс регистрации на стажировку
(«Стажировка» -> «Отправить заявку») далее скачиваете задание.
Решаете, заполняете все формы, нажимаете «Отправить заявку».
После того, как Вы отправили заявку на стажировку, на карте квестов (https://javarush.ru/quests) статус стажировки будет «Проходится»:
Вы отправили заявку на стажировку
После этого я рассматриваю Вашу заявку.
1. Если у Вас нет подписки, которая дает право проходить стажировку — Вам на e-mail придет письмо об этом.
2. Если у меня будут замечания по Вашему решению — Вам на e-mail придет письмо с моими замечаниями.
3. Если все хорошо — я принимаю Вас на стажировку. Указывайте правильный почтовый адрес, так как Вам на почту придет письмо с дальнейшими инструкциями.

Для тех, кто продолжает пользоваться сайтом JavaRush 1.0, Вы можете подать заявку как через старый сайт, так и через новый (требуемый уровень для участия — 35, а не 30).

Если будут вопросы по тестовому, задавайте в этом топике.

Заявки на стажировку будут рассматриваются 2-3 раза в неделю в зависимости от количества заявок.
  • ,

На JavaRush появился новый квест — Harvard CS50!

Поехали учиться в Гарвард? Или, постойте, никуда ехать-лететь-идти не нужно! И платить за обучение не нужно, просто переходите сюда и учитесь!

CS50

Спешим сообщить, что полный перевод гарвардского курса по основам программирования CS50 завершён и выложен на JavaRush. По ссылке вы найдете структурированные по неделям видеолекции, дополнительные материалы, задания и пояснения к заданиям. Неделя обучения (уровень) состоит из 1-2 видеолекций профессора Малана, дополнительных текстовых материалов (для повторения и расширения услышанного на лекциях), 1-3 практических заданий с пояснением и разбором, а также ссылок на код и учебные ресурсы.

Курс рассчитан в первую очередь на новичков, но он будет интересен и тем, кто уже работает в ИТ.

Что изучают на CS50


  • Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости.
  • Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам».
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка.
  • Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C.
  • Основы баз данных и SQL.
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы.
  • Основы подготовки презентации проектов по программированию.

… Но самое главное, это не то, что учат на CS50 (материалов по теме в интернете полно!), а как учат. Лекции CS50 — одни из самых увлекательных и ярких в истории высшего образования.
  • ,

Не понимаю почему не проходит проверку..ведь ответ показан правильный, условия не нарушены

package com.javarush.task.task11.task1123;

public class Solution {
public static void main(String[] args) throws Exception {
int[] data = new int[]{1, 2, 3, 5, -2, -8, 0, 77, 5, 5};

Pair<Integer, Integer> result = getMinimumAndMaximum(data);

System.out.println(«Minimum is » + result.x);
System.out.println(«Maximum is » + result.y);
}

public static Pair<Integer, Integer> getMinimumAndMaximum(int[] array) {
if (array == null || array.length == 0) {
return new Pair<Integer, Integer>(null, null);
}
else{
//Напишите тут ваше решение
for (int i = array.length — 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
if (array[j] > array [j+1]){
int num = array[j];
array[j] = array[j+1];
array[j+1] = num;
}
}
}
}
return new Pair<Integer, Integer>(array[0], array[9]);
}

public static class Pair<X, Y> {
public X x;
public Y y;

public Pair(X x, Y y) {
this.x = x;
this.y = y;
}
}

}
  • ,

Update JavaRush

Друзья! Пришло время очередного обновления JavaRush.

JavaRush update

В рамках первого летнего апдейта мы исправили часть ошибок, о которых вы нам писали, и реализовали ряд предложенных вами функций. Вот основные изменения:

  1. На JavaRush появился новый квестHarvard CS50. Многие из вас уже видели переводы видеолекций гарвардского курса по основам программирования CS50 на нашем сайте. Теперь CS50 на русском языке доступен на JavaRush в виде отдельного квеста (с видео, текстовыми лекциями, заданиями, подсказками к заданиям, слайдами из лекций, кодом из лекции и разными дополнительными материалами).
  2. Улучшена светлая тема JavaRush с учётом пожеланий пользователей.
  3. Улучшены и проверены условия или механизм проверки таких задач: task2508, task0316, task3310(10), 2712(09), task3608, task1215, task1531, task0301, task2407, task1605, task3113, task3801, task3707(5), task2209, task1533, task2207, task3913(1), task2025, task1411, task3702(3), task0712, task0507, task1003, task3110(15)
  4. В WebIDE добавлена поддержка светлой темы.
  5. Добавлена возможность переименования файлов в WebIDE.
  6. Исправлено отображение аватарок в старых браузерах.
  7. Улучшены шрифты на сайте.
  8. Восстановлена работоспособность сайта у пользователей с ограниченным доступам к «Вконтакте».
  9. Исправлено открытие файла Solution при выгрузке новой задачи в Плагине JavaRush.
  10. Добавлена поддержка переноса строки в «Диалогах».
  • ,

Помогите почему не проходит??

package com.javarush.task.task08.task0827;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/*
Работа с датой
*/

public class Solution {
public static void main(String[] args) {

try {
System.out.println(isDateOdd(«JANUARY 1 2020»));
} catch (ParseException e) {
e.printStackTrace();
}
}

public static boolean isDateOdd(String date) throws ParseException {
Date yearStartTime = new Date(1, 0, 1);
SimpleDateFormat format = new SimpleDateFormat(«MMMM d yyyy», Locale.ENGLISH);
Date currentTime = format.parse(date);
long msTimeDistance = currentTime.getTime() — yearStartTime.getTime();
long msDay = 24 * 60 * 60 * 1000;
int dayCount = (int) (msTimeDistance / msDay);
if (dayCount % 2 != 0) {
return true;
} else {
return false;
}
}

}
  • ,

Помогите почему не проходит??

package com.javarush.task.task08.task0827;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/*
Работа с датой
*/

public class Solution {
public static void main(String[] args) {

try {
System.out.println(isDateOdd(«JANUARY 1 2020»));
} catch (ParseException e) {
e.printStackTrace();
}
}

public static boolean isDateOdd(String date) throws ParseException {
Date yearStartTime = new Date(1, 0, 1);
SimpleDateFormat format = new SimpleDateFormat(«MMMM d yyyy», Locale.ENGLISH);
Date currentTime = format.parse(date);
long msTimeDistance = currentTime.getTime() — yearStartTime.getTime();
long msDay = 24 * 60 * 60 * 1000;
int dayCount = (int) (msTimeDistance / msDay);
if (dayCount % 2 != 0) {
return true;
} else {
return false;
}
}

}

level21.lesson02.task01 обьясните плиз)

/* Определяем адрес сети
1) Даны IP-адрес и маска подсети, необходимо вычислить адрес сети - метод getNetAddress.
Используйте операцию поразрядной конъюнкции (логическое И).
Пример:
IP-адрес:       11000000 10101000 00000001 00000010 (192.168.1.2)
Маска подсети:  11111111 11111111 11111110 00000000 (255.255.254.0)
Адрес сети:     11000000 10101000 00000000 00000000 (192.168.0.0)
2) Реализовать метод print, который выведет в консоль данные в двоичном коде
3) Метод main не участвует в тестировании
*/

ок, с этим понятно. вот шаблон задачи…

public class Solution {
    public static void main(String[] args) {
        byte[] ip = new byte[]{(byte) 192, (byte) 168, 1, 2};
        byte[] mask = new byte[]{(byte) 255, (byte) 255, (byte) 254, 0};
        byte[] netAddress = getNetAddress(ip, mask);
        print(ip);          //11000000 10101000 00000001 00000010
        print(mask);        //11111111 11111111 11111110 00000000
        print(netAddress);  //11000000 10101000 00000000 00000000
    }

    public static byte[] getNetAddress(byte[] ip, byte[] mask) {
        return new byte[4];
    }

    public static void print(byte[] bytes) {
    }
}


я прочитал что в джаве нету беззнаковых типов (ну кроме char). в массив пишем тип байт. у байта значение до 128, то есть уже вместо 255 там получится -64… не совсем понял этот момент…

Удваиваем слова 7 уровень, 9 лекция

ВОПРОС


Парни зачем эта строчка вообще ??? ArrayList result = doubleValues ( list ); эта ссылка result вообще нигде не использовалась!!! вместо этого просто вызываем метод doubleValues( list ); Этот список result вообще не нужен! ЗАЧЕМ?

Условие задачи
1. Введи с клавиатуры 10 слов в список строк.
2. Метод doubleValues должен удваивать слова по принципу a,b,c -> a,a,b,b,c,c.
3. Выведи результат на экран, каждое значение с новой строки
public class Solution {
    public static void main(String[] args) throws Exception {
        // Считать строки с консоли и объявить ArrayList list тут

        ArrayList<String> result = doubleValues(list);

        // Вывести на экран result
    }

    public static ArrayList<String> doubleValues(ArrayList<String> list) {
        //напишите тут ваш код
        return null;
    }
}


Мое решение
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 < 2; i++) {
            list.add(reader.readLine());
        }

       ArrayList<String> result = doubleValues(list);
    //    doubleValues(list); <em><u> <u>ПОЧЕМУ НЕЛЬЗА ТАК НАПИСАТЬ ПО ПРОСТОМУ</u></u></em>

        // Вывести на экран result

        for (String s : list) {
            System.out.println(s);
        }
    }

    public static ArrayList<String> doubleValues(ArrayList<String> list) {
        //напишите тут ваш код

        for (int i = 0; i < list.size(); i+=2) {
           list.add(i, list.get(i));
        }


        return list;
    }
}