• ,

Что добавить в резюме?

Всем привет

Сижу пишу резюме и вот думаю, что туда добавить.
Прошел до 31 уровня включительно.
Пытаюсь создать список того, что проходил за эти уровни (из важного).
Из того, что пришло в голову:
  • Swing
  • Threads, Concurrency
  • MVC, Producer-Consumer
  • Socket
  • Zip Archives
  • Input/output streams & Java8 Files/Path

У кого есть идеи? Может что-то добавить, что-то убрать?
Можете писать вещи из будущих уровней тоже (только предупредите).
  • ,

package com.javarush.task.task17.task1711;

Всем привет! Необходима помощь в решении задачи. Новый валидатор в данном случае доволен всем, кроме одного пункта: «Каждый case оператора switch должен иметь блок синхронизации по allPeople». Но у меня же есть блок синхронизации по allPeople. Как тут быть? :)
Снизу скрин валидатора!

  • ,

level15.lesson06.task01

Задание решил и собственно вопрос
public static class JuniorJavaDev extends JavaDev{ // тут как бы наследование не нужно но проходит и так и так
        JavaDev zapp = new JavaDev();
        JavaDev hubert = new JavaDev();

        String askZapp(String question) {
            return zapp.answerQuestion(question);
        }

        String askHubert(String question) {
            return hubert.answerQuestion(question);
        }

}

Как я понимаю наследование не нужно из за того что мы создаем объекты JavaDev и с ними работаем.
Наследование убирается из за связи Has-a или из за чего может есть ссылки на ресурсы где это нормально объясняется?
  • ,

level18.lesson05.task03

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

package com.javarush.test.level18.lesson05.task03;

/* Разделение файла
Считать с консоли три имени файла: файл1, файл2, файл3.
Разделить файл1 по следующему критерию:
Первую половину байт записать в файл2, вторую половину байт записать в файл3.
Если в файл1 количество байт нечетное, то файл2 должен содержать бОльшую часть.
Закрыть потоки. Не использовать try-with-resources
*/

import java.io.*;

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

//        чтение файлов с консоли
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        InputStream inputStream = new FileInputStream(reader.readLine());
        FileOutputStream outputStream1 = new FileOutputStream(reader.readLine());
        FileOutputStream outputStream2 = new FileOutputStream(reader.readLine());

//        определяем, сколько всего символов, заносим их в массив buffer
        int count = inputStream.available();
        int countFirstOutput, countSecondOutput;
        byte[] buffer = new byte[inputStream.available()];
        inputStream.read(buffer);

        if (count > 0) {
            if (count % 2 == 0) {
                countFirstOutput = count / 2;
                countSecondOutput = (countFirstOutput / 2) + 1;
            } else {
                countFirstOutput = count / 2;
                countSecondOutput = (countFirstOutput / 2) + 2;
            }
        } else {

//            выполняется в том случае, если первый файл пустой
            countFirstOutput = 0;
            countSecondOutput = 0;
        }

//        пишем в потоки
        outputStream1.write(buffer, 0, countFirstOutput);
        outputStream2.write(buffer, countFirstOutput, countSecondOutput);

//        закрытие потоков
        reader.close();
        inputStream.close();
        outputStream1.close();
        outputStream2.close();

    }
}
  • ,

Работа с компилятором в командной строке

Всем привет! Сегодня начал читать книгу «Изучаем Java», наткнулся на 1 практическое задание и застрял на нем. В частности: последняя (4) картинка: не понимаю, как нужно «запустить JVM»?
Буду очень благодарен за разъяснения! Заранее спасибо.
Фрагмент книги "Изучаем Java"
  • ,

level05.lesson12.bonus03

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        int maximum = 0;
        int b;
        if (a>0)
        {
            for (int i = 1; i <= a; i++)
            {
                b = Integer.parseInt(reader.readLine());
                if (maximum < b) maximum = b;
            }
            System.out.println(maximum);
        }
    }
}


Ребята яверы, помогите. В чём кроется ошибка? Всё работает нормально, ответы выдаёт верные, но код не принимается. Что поменять?

level08.lesson11.home06

/* Вся семья в сборе
1. Создай класс Human с полями имя (String), пол (boolean), возраст (int), дети (ArrayList<Human>).
2. Создай объекты и заполни их так, чтобы получилось: два дедушки, две бабушки, отец, мать, трое детей.
3. Вывести все объекты Human на экран.
*/

import java.util.*;

public class Solution
{
    public static void main(String[] args)
    {
        //пункт 2
        Human grandFather1 = new Human("Александр", true, 60, new ArrayList<Human>(Arrays.asList(father)));
        Human grandFather2 = new Human("Михаил", true, 65, new ArrayList<Human>(Arrays.asList(mother)));
        Human grandMother1 = new Human("Мария", false, 55, new ArrayList<Human>(Arrays.asList(father)));
        Human grandMother2 = new Human("Наталья", false, 60, new ArrayList<Human>(Arrays.asList(mother)));
        Human father = new Human("Евгений", true, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human mother = new Human("Евгения", false, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human child1 = new Human("Саша", false, 8);
        Human child2 = new Human("Ирина", false, 10);
        Human child3 = new Human("Андрей", true, 15);
        System.out.println(grandFather1);
        System.out.println(grandFather2);
        System.out.println(grandMother1);
        System.out.println(grandMother2);
        System.out.println(father);
        System.out.println(mother);
        System.out.println(child1);
        System.out.println(child2);
        System.out.println(child3);

    }

    public static class Human
    {
        //пункт 1
        String name;
        boolean sex;
        int age;
        ArrayList<Human> children;

        public Human(String name, boolean sex, int age){
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
        public Human(String name, boolean sex, int age, ArrayList<Human> children){
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.children = children;
        }

        public String toString()
        {
            String text = "";
            text += "Имя: " + this.name;
            text += ", пол: " + (this.sex ? "мужской" : "женский");
            text += ", возраст: " + this.age;

            int childCount = this.children.size();
            if (childCount > 0)
            {
                text += ", дети: "+this.children.get(0).name;

                for (int i = 1; i < childCount; i++)
                {
                    Human child = this.children.get(i);
                    text += ", "+child.name;
                }
            }

            return text;
        }
    }

}

не работает вот это место
Human grandFather1 = new Human("Александр", true, 60, new ArrayList<Human>(Arrays.asList(father)));
        Human grandFather2 = new Human("Михаил", true, 65, new ArrayList<Human>(Arrays.asList(mother)));
        Human grandMother1 = new Human("Мария", false, 55, new ArrayList<Human>(Arrays.asList(father)));
        Human grandMother2 = new Human("Наталья", false, 60, new ArrayList<Human>(Arrays.asList(mother)));
        Human father = new Human("Евгений", true, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));
        Human mother = new Human("Евгения", false, 35, new ArrayList<Human>(Arrays.asList(child1, child2, child3)));

голову сломал, не понимаю, как правильно добавить элементы в список при инициации
объясните пожалуйста, что не так делаю

level05.lesson12.home05;

/* Вводить с клавиатуры числа и считать их сумму
Вводить с клавиатуры числа и считать их сумму, пока пользователь не введёт слово «сумма». Вывести на экран полученную сумму.
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution
{
public static void main(String[] args) throws Exception
{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int summ = 0;
for (; true; )
{
String text = bf.readLine();
if (text.equals(«сумма»))

System.out.println(summ);
else
{
int num = Integer.parseInt(text);
summ = summ + num;
}

}
}
}


в ИДЕА вроде проходит все мои проверки, но проверку сервера пройти не могу. Подскажите что упустил? Может break; куда то засунуть надо?
  • ,

level07.lesson09.task03

   Добрый день, уважаемые. Сижу над очередной задачей по ArrayList, и ещё больше понимаю, что абсолютно не понимаю как же в памяти происходят все эти процессы. Для того чтобы выразить свою мысль, я процитирую условие задачи, и как я понимаю, как оно должно работать. Условие задачи:
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
   Значит допустим, есть некий внутренний массив. Изначально мы вносим туда три слова: мама, мыла, раму (условно s1, s2, s3). Соответственно: s1 встаёт на ячейку в массиве «0», s2 — «1», и s3 на «2». По условию задачи нам надо вставить после каждого слова «именно». Как я понимаю, чтобы осуществить это, нам надо как бы «раздвинуть слова в массиве». То есть, s2 поставить в ячейку «2», а s3 в ячейку «4» (как на скриншоте).

Соответственно этому, по-моему сам процесс происходит следующим образом:
  1. Берем данные из ячейки #1 и копируем её в ячейку #2
  2. Данные из ячейки #2 переносятся в ячейку #3
  3. Берем данные из ячейки #3 и копируем в ячейку #4
Теперь в ячейки #1, #3 и #5 вставляем слово «именно». Собственно это я попытался выполнить в программе вручную без цикла, чтобы понять как оно работает.

list.add(2, list.get(1));
        list.add(4, list.get(3));

        list.add(1, "именно");
        list.add(3, "именно");
        list.add(5, "именно");

Вывод этого:
мама
именно
мыла
именно
мыла
именно
раму
раму

Прошу разобраться как же сделать эту задачу, и почему именно так. Заранее благодарен.
P.S. приношу извинение за такое огромное объяснение.
P.P.S. бывают такие темы, когда ну ни в какую не доходит, хоть застрелись.

Выбор файлов по маске. Проблема с русской кодировкой

Решил написать программу на Java, которая должна отбирать файлы по маске и копировать их в специальную папку(путь заранее известен). Однако столкнулся с трудностями.
Читаю файл, смотрю является ли он директорией, если да то начинаю смотреть его внутреннюю структуру, если нет, проверяю удовлетворяет ли он моей маске.
.indexOf — метод который проверяет входит ли маска в имя директории или файла.
Когда тестировал на каталогах с файлами и папками названными на английском языке — проблем не было, однако когда перешел на русские — возникли проблемы. Считывая название файла(на русском) компьютер выпадает что-то вроде:
«DirList=” Єг«мвҐв ЎЁ§­Ґб  Ё ¬Ґ­Ґ¤¦¬Ґ­в 
DirList=” Єг«мвҐв Јг¬ ­Ёв а­ле ­ гЄ
DirList=Programmnew
DirList=Њ®ЎЁ«м­®бвм а Ў®в­ЁЄ®ў
DirList=Њ®ЎЁ«м­®бвм бв㤥­в®ў»

Вопрос, как это можно решить?