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

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

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

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

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

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

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

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

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

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

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

Уровень 40 - Вопросы

Уровень 40.5 Send Email

В лекции говорится:
"… Воспользуемся мудростью Intellij IDEA.
Создай класс и добавь в раздел импорта пакеты javax.mail.* и javax.mail.internet.*
Затем жми Alt+Enter и пусть IDEA все сделает за тебя:
Так выглядит предложение скачать недостающие библиотеки ..."

И затем показан IDEA-скриншот, где в меню-лампочке первой строкой идёт:
«Add Java EE 6 jars to module dependencies»

— Так вот, у меня такой строки нет. У меня первой строкой идёт:
«Optimize imports»

В чём тут дело?
  • ,

task36.task3608 MVC(2)

task36.task3608 MVC(2) Не пойму что ещё не так. Чего ещё не хватает. Подскажите плиз в какую сторону смотреть?

// Controller

package com.javarush.task.task36.task3608.controller;

import com.javarush.task.task36.task3608.model.Model;

public class Controller {

    private Model model;
    public void onShowAllUsers(){
        model.loadUsers();
    }
    private void setModel(Model model) {
        this.model = model;
    }

}


// View

package com.javarush.task.task36.task3608.view;

import com.javarush.task.task36.task3608.controller.Controller; 
import com.javarush.task.task36.task3608.model.ModelData;

public interface View {

    void refresh(ModelData modelData);
    void setController(Controller controller);

}

task19.task1921 не принимает валидатор

Всем привет! Подскажите, почему валидадор не хочет принимать задачу? Локально все работает так, как и должно. Однако валидатор так не считает. Ругается на «Программа должна правильно работать с двойными именами, например Анна-Надежда.»

Собственно код

package com.javarush.task.task19.task1921;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

/* 
Хуан Хуанович
*/

public class Solution {
    public static final List<Person> PEOPLE = new ArrayList<Person>();

    public static void main(String[] args) throws ParseException {
        try {
            BufferedReader reader = new BufferedReader(new FileReader(args[0]));
            SimpleDateFormat sdf = new SimpleDateFormat("dd mm YYYY", Locale.ENGLISH);
            String buffer;

            try {
                while ((buffer = reader.readLine()) != null) {
                    String name = "";
                    String bDay = "";
                    String[] temp = buffer.split(" ");
                    for (int i = 0; i < temp.length; i++) {
                        if (checkNumber(temp[i])) bDay += temp[i] + " ";
                        else name += temp[i] + " ";
                    }
                    Date date = sdf.parse(bDay.substring(0, bDay.length() - 1));

                    PEOPLE.add(new Person(name, date));
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static boolean checkNumber(String n) {
        try {
            Integer.parseInt(n);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
}

В консоль выводит это, т.е. имена с "-" обрабатываются более чем нормально и корректно

Petrov Sun Dec 28 00:12:00 MSK 1986
Sidorov Sun Dec 28 00:12:00 MSK 1986
Ivanov Sun Dec 28 00:12:00 MSK 1986
Petrov-Sidorov Popov Sun Dec 31 00:12:00 MSK 1989

Где и что я упускаю?
  • ,

Как импортировать проект из GitLab в IDEA?

Взяли на практику как Java-Junior, ура!
Дали ноут со свежепереустановленной Windows 10.
Первое задание: установить IDE, импортировать проект из GitLab и запустить его.
Дали акк на GitLab фирмы и ссылку на хранящийся там проект: gitlab.firmaName.net/PROJECTNAME/Backend.git

Как импортировать проект из GitLab в IDEA?

Встрял на втором задании Archiver(2) task.task31.task3110

Всем привет.

Уже второй раз так горит. Все работает. Все нормально. Но вот эти тонкости х**** валидатора.

Подскажите, в чем тут проблема?

Требования:
1. Метод createZip должен создавать ZipOutputStream используя поле zipFile и метод Files.newOutputStream.
2. Метод createZip должен создавать элемент архива ZipEntry c именем файла, полученным из параметра source.
3. Созданный ZipEntry нужно добавить в ZipOutputStream.
4. Для переменной source должен быть создан InputStream с помощью метода Files.newInputStream.
5. Данные из InputStream нужно переписать в ZipOutputStream.
6. Закрой текущий Entry у объекта ZipOutputStream.
7. InputStream для source должен быть закрыт.
8. ZipOutputStream должен быть закрыт.


package com.javarush.task.task31.task3110;

import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipFileManager {
    private Path zipFile;

    public ZipFileManager(Path zipFile) {
        this.zipFile = zipFile;
    }

    public void createZip(Path source) throws Exception {
        try(ZipOutputStream zipOutputStream = new ZipOutputStream(Files.newOutputStream(zipFile.getFileName()))) {
            ZipEntry zipEntry = new ZipEntry(source.getFileName().toString());
            zipOutputStream.putNextEntry(zipEntry);

            try(InputStream inputStream = Files.newInputStream(source.getFileName())) {
                while (inputStream.available() > 0) {
                    zipOutputStream.write(inputStream.read());
                }
            }
            zipOutputStream.closeEntry();
        }
    }
}


Второй класс не выкладываю, тк.., ругается не на него.

Заранее спасибо.
  • ,

Задача змейка и невозможность написать свою змейку с 0. В чем моя проблема?

Добрый день.
У меня такое может быть странное обращение, но мне хотелось бы понять где истина)
Заранее простите за возможный сумбур, не берите ничего на личный счет.

Я дошел до 25 уровня.
И только сейчас решил вам написать насчет задачи «Змейка».
разрешите немного пояснить.

Я дошел до 14-ой части, на 14-ой части надо было реализовать метода принт.

Я долго мучался сам, но ничего не смог решить на 14 части. Сидел примерно дня 3-4. Потом мне пришлось начать искать помощи в гугле, я облазил много страничек, но в конце концов мне пришлось просто скопировать чужое решение этой части. Причем я больше времени потратил на копипаст этого решения, потому что подошло только одно из всего множества. (Для меня до сих пор загадка, почему оно подошло, а мое нет)
После 14-ой части было легче.

Я прошел этот уровень, смог идти дальше. Но знаний после этой задачи у меня не осталось.
Я решил закрепить эту задачу написав ее сам, знаете какой результат? Я не смог, потому что я просто не понял как решить 14-ую часть)) К тому же по ходу задачи «Змейка» добавляются автоматически строки кода, и написано(разобраться в них) — я разобрался, но еще раз написать тоже самое не смог.

Я хочу спросить, в чем моя ошибка? Где слабая сторона? Как мне стать лучше? По какой причине у меня не осталось знаний после этой задачи?

String matches и contains не работают регулярные выражения

Здраствуйте
Я не могу понять, почему класс String его методы contains и matches не работают у меня с регулярными выражениями. При этом у других данный код работает. у меня java 8. Может быть такое, что в новой версии данные методы были отменены? или я все таки не правильно что то делаю.

P.S. данную задачу другими методами я могу решить. Я протестировал именно эти методы и они выдали такой
странный результат.

package com.javarush.task.task22.task2212;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
Проверка номера телефона
*/
public class Solution {
    public static boolean checkTelNumber(String telNumber)

    {
        System.out.println(telNumber);
        if(telNumber == null) return false;
        Pattern pattern = Pattern.compile("[a-z]+");
        Matcher matcher = pattern.matcher(telNumber); // так работает
        System.out.println("has symbol: " + matcher.find());
        System.out.println("contains: "+telNumber.contains("\\w"));

        System.out.println("matches: " + telNumber.matches("\\w"));
        System.out.println("contains: " + telNumber.contains("[a-z]"));

        return true;
    }

    public static void main(String[] args) {
        System.out.println(checkTelNumber("sd"));    }
}


вывод данного кода

sd
has symbol: true
contains: false
matches: false
contains: false
true

String matches и contains не работают регулярные выражения

Здраствуйте
Я не могу понять, почему класс String его методы contains и matches не работают у меня с регулярными выражениями. При этом у других данный код работает. у меня java 8. Может быть такое, что в новой версии данные методы были отменены? или я все таки не правильно что то делаю.

P.S. данную задачу другими методами я могу решить. Я протестировал именно эти методы и они выдали такой
странный результат.

package com.javarush.task.task22.task2212;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
Проверка номера телефона
*/
public class Solution {
    public static boolean checkTelNumber(String telNumber)

    {
        System.out.println(telNumber);
        if(telNumber == null) return false;
        Pattern pattern = Pattern.compile("[a-z]+");
        Matcher matcher = pattern.matcher(telNumber); // так работает
        System.out.println("has symbol: " + matcher.find());
        System.out.println("contains: "+telNumber.contains("\\w"));

        System.out.println("matches: " + telNumber.matches("\\w"));
        System.out.println("contains: " + telNumber.contains("[a-z]"));

        return true;
    }

    public static void main(String[] args) {
        System.out.println(checkTelNumber("sd"));    }
}


вывод данного кода

sd
has symbol: true
contains: false
matches: false
contains: false
true
  • ,

Уровень 22. Вопросы.

Регулярные выражения, примеры
Java Multithreading
2 уровень, 11 лекция

В лекции говорится что:
В регулярных выражениях символы «[ ] \ / ^ $. |? * + ( ) { }» имеют специальное значение.
Как и в Java их необходимо экранировать.
Если мы хотим описать, что строка должна состоять из трех символов «?», то нельзя писать так: ?{3}, т.к. символ «?» является управляющим. Надо сделать так: \?{3}

Вопрос: Почему в примере экранируется только символ «?» и не экранируются символы фигурных скобок «{ }»?
  • ,

Сделаешь всё по пунктам, всё работает. Валидатору не нравится.

Всё перепроверишь, и паника. Хорошо если удаётся нагуглить чьё-то решение, и заменить своё, тоже верное, но не по вкусу валидатору которое. А если нет, то клинит напрочь.