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.


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

level08.lesson06.task02 замеры

Замерил время выполнения операций по задаче (там, где нужно сделать всего по 10000 раз). Получил интересные результаты.

ArrayList: insert: 17
ArrayList: get: 1
ArrayList: set: 5
ArrayList: remove: 16
LinkedList: insert: 4
LinkedList: get: 166
LinkedList: set: 198
LinkedList: remove: 2

Если посмотреть на время выполнения, то LinkedList выигрывает в операциях вставки/удаления в разы, но проигрывает во всех остальных операциях в десятки и сотни раз!
  • ,

Помогите с решением задачи level8, lesson8, task2

Доброго времени суток.

Подскажите, что я делаю не так!

Задание:

/* Удалить все числа больше 10
Создать множество чисел(Set<Integer>), занести туда 20 различных чисел.
Удалить из множества все числа больше 10.
*/


Тело функции createSet:


HashSet<Integer> set = new HashSet<Integer>();
for (int i = 1; i <= 20; i++) set.add(new Integer(i));
return set;


Тело функции removeAllNumbersMoreThan10:


for (Integer i : set) if (i > 10) set.remove(i);
return set;


Заранее благодарен!

level27.lesson06.task02 Спасайте

Приветствую, никак не могу сдать задачу. Вроде правильно работает, а все не то. Помогите.

package com.javarush.test.level27.lesson06.task02;

/* Определяем порядок захвата монитора. Сложная.
Реализуйте логику метода isNormalLockOrder, который должен определять:
соответствует ли порядок synchronized блоков в методе someMethodWithSynchronizedBlocks - порядку
передаваемых в него аргументов. Должно выполняться условие:
для разных объектов o1 и o2 isNormalLockOrder(o1, o2) != isNormalLockOrder(o2, o1), для одинаковых объектов одинаковый результат
Метод main не участвует в тестировании.
*/
public class Solution {
    public void someMethodWithSynchronizedBlocks(Object obj1, Object obj2) {
        //следующие 4 строки в тестах имеют другую реализацию
        int lock1 = obj1.hashCode();
        int lock2 = obj2.hashCode();
        Object firstLock = lock1 > lock2 ? obj1 : obj2;
        Object secondLock = lock1 > lock2 ? obj2 : obj1;

        synchronized (firstLock) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException ignored) {
            }

            synchronized (secondLock) {
                System.out.println(obj1 + " " + obj2);
            }
        }
    }

    public static boolean isNormalLockOrder(final Solution solution, final Object o1, final Object o2) throws Exception {
        synchronized (solution)
        {
            Thread thread = new Thread()
            {
                @Override
                public void run()
                {
                    synchronized (o1)
                    {
                        try
                        {
                            Thread.sleep(2000);
                        }
                        catch (InterruptedException e) {}
                    }
                }
            };
            thread.start();

            Thread thread1 = new Thread(){
                @Override
                public void run()
                {
                    solution.someMethodWithSynchronizedBlocks(o1, o2);
                }
            };
            thread1.start();

            while (true)
            {
                if (thread1.getState().equals(Thread.State.TIMED_WAITING))
                    return false;
                if (thread1.getState().equals(Thread.State.BLOCKED))
                    return true;
            }
        }
    }

    public static void main(String[] args) throws Exception {
        final Solution solution = new Solution();
        final Object o1 = new Object();
        final Object o2 = new Object();
        System.out.println(o1.hashCode() + " - " + o2.hashCode());
        System.out.println(o1 + " - " + o2);

        new Thread() {
            @Override
            public void run() {
                try {
                    System.out.println(isNormalLockOrder(solution, o1, o2)); //expected boolean b
                } catch (Exception ignored) {
                }
            }
        }.start();

        new Thread() {
            @Override
            public void run() {
                try {
                    System.out.println(isNormalLockOrder(solution, o2, o1)); //expected boolean !b
                } catch (Exception ignored) {
                }
            }
        }.start();
    }
}

level35.lesson10.task02

Добрый день, мой код не проходит проверку. В чем может быть проблема?
/* extends vs super
Логика всех методов — добавить source в destination.
!!! Расставьте ?, extends и super где необходимо:!!!
1) one — должен работать с одним и тем же типом;
2) two — должен добавлять любых наследников типа T в список, умеющий хранить только тип T;
3) three — должен добавлять объекты типа T в любой список, параметризированный любым родительским классом;
4) four — должен добавлять любых наследников типа T в список, параметризированный любым родительским классом.
Не оставляйте закомментированный код.
*/

import java.util.List;
public abstract class Solution {
    public abstract <T> void one(List<T> destination, List<T> source);

    public abstract <T> void two(List<? extends T> destination, List<T> source);

    public abstract <T> void three(List<T> destination, List<? super T> source);

    public abstract <T> void four(List<? extends T> destination, List<? super T> source);
}

Объясните нубу в чем разница этих решений

Бобра тем, кто обратил внимание :-D
Вот условие задачи:
1. Создать массив на 10 строчек.
2. Ввести с клавиатуры 8 строчек и сохранить их в массив.
3. Вывести содержимое всего массива (10 элементов) на экран в обратном порядке. Каждый элемент — с новой строки.

Вот решение, предлагаемое в интернете:

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        String [] st = new String[10];
        BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));

        for(int i = 0; i < 8; i++){
            st[i] = rd.readLine();
        }


        for(int i = st.length-1; i >= 0; i--){
            System.out.println(st[i]);
        }
    }
}


Вот мое решение:

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        String [] st = new String[10];
        BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));

        for(int i = 0; i < 8; i++){
            st[i] = rd.readLine();
        }


        for(int i = st.length; i > 0; i--){
            System.out.println(st[i]);
        }
    }
}


Разница во втором цикле:
Мое:
for(int i = st.length; i > 0; i--){
            System.out.println(st[i]);
        }

Левое:
for(int i = st.length; i > 0; i--){
            System.out.println(st[i]);
        }


При компиляции моего решения, после введения 8-го элемента массива st[], вылетает вот что:
Exception in thread «main» java.lang.ArrayIndexOutOfBoundsException: 10
at com.javarush.test.level03.lesson12.home02.Solution.main(Solution.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Так вот, прошу помочь мне разобраться в чем все-таки разница, ибо дело принципа :-)
  • ,

level19.lesson05.task02 - Кто сдал эту задачу. Подскажите люди добрые

Вот не большой код для создания файла:

public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter =
                    new BufferedWriter(new FileWriter("d:/level_19.txt"));

        bufferedWriter.write(String.format("%s\r\n%s\r\n%s %s\t%s",
                "wor", "ld", "wor,ld World world. worLd World&world", "wo", "rld"));

        bufferedWriter.close();
    }

Подскажите пожалуйста у кого сколько world-ов насчитал сданный код, а то я уже в такие дебри полез )

level19.lesson05.task02

Программа компилируется и универсально работает в IDEA. Попробовал отправить через сайт — оказалось, что вместо положенного числа выводится следующее: «java.lang.SecurityException: null». Что в моем коде вызывает подобное исключение на сервере?
package com.javarush.test.level19.lesson05.task02;

/* Считаем слово
Считать с консоли имя файла.
Вывести в консоль количество слов "world", которые встречаются в файле.
Закрыть поток ввода.
*/


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Solution {
    public static void main(String[] args)throws IOException
    {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String file = br.readLine();
            br.close();
            BufferedReader fr = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            int worldCount = 0;
            Pattern p = Pattern.compile("world");
            while (fr.ready())
            {
                String line = fr.readLine();
                Matcher m = p.matcher(line);
                while (m.find())
                {
                    worldCount++;
                }
            }
            fr.close();
            System.out.println(worldCount);
        }
    }
  • ,

level05.lesson09.task02

Подскажите, плз, что не так, при проверке пишет, что программа не компилируется на сервере, я уже ума не приложу, где ошибка:
/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
— Имя,
— Имя, вес, возраст
— Имя, возраст (вес стандартный)
— вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
— вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен,
то нужно указать какой-нибудь средний вес.
Кот не может ничего не весить.
То же касательно возраста.
А вот имени может и не быть (null).
То же касается адреса: null.
*/

public class Cat
{
//Напишите тут ваш код
private String name;
private int weight;
private int age;
private String color;
private String address;

public Cat(String name){
this.name = name;
}

public Cat(String name, int weight, int age){
this.name = name;
this.weight = weight;
this.age = age;
}

public Cat(String name, int age){
this.name = name;
this.age = age;
this.weight = 3;
}

public Cat(int weight, String color){
this.weight = weight;
this.color = color;
this.name = null;
this.address = null;
this.age = 2;
}

public Cat(int weight, String color, String address){
this.weight = weight;
this.color = color;
this.address = address;
}
}

Задача абсолютно аналогична level05.lesson07.task02. Эту решил с первого захода, а в 9 лессоне никак.
Хелп-хелп!
  • ,

Level05.lesson12.task02

Всем привет! Почему не проходит тестирование:
public class Solution
{
    public static void main(String[] args)
    {
        Man man1 = new Man("Petr", 20, "Moskva");
        Man man2 = new Man("Vasya", 30, "Stambul");
        Woman woman1 = new Woman("Manya", 19, "Moskva");
        Woman woman2 = new Woman("Panya", 55, "Yrypinsk");// Создай по два объекта каждого класса тут

        System.out.println(man1.man);
        System.out.println(man2.man);
        System.out.println(woman1.woman);
        System.out.println(woman2.woman);// Выведи их на экран тут
    }

    public static class Man
    {
        private String man = null;
        String name;
        int age;
        String adress;

        public Man(String name, int age,String adress){
            this.man = name + " " + age + " " + adress;
        }
    }// Напиши тут свои классы

    public static class Woman
    {
        private String woman = null;
        String name;
        int age;
        String adress;

        public Woman(String name, int age, String adress){
            this.woman = name + " " + age + " " + adress;
        }
    }
}
  • ,

level19.lesson08.task02 не проходит, что не так?

Подскажите, что не так, пожалуйста.
Код:
package com.javarush.test.level19.lesson08.task02;

/* Ридер обертка 2
В методе main подмените объект System.out написанной вами ридер-оберткой по аналогии с лекцией
Ваша ридер-обертка должна заменять все подстроки "te" на "??"
Вызовите готовый метод printSomething(), воспользуйтесь testString
Верните переменной System.out первоначальный поток
*/

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

public class Solution {
    public static TestString testString = new TestString();

    public static void main(String[] args) {
        PrintStream consoleStream = System.out;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        PrintStream stream = new PrintStream(outputStream);
        System.setOut(stream);
        testString.printSomething();
        String result = outputStream.toString();

        System.setOut(consoleStream);

        StringBuilder sb = new StringBuilder(result);
        while (sb.toString().contains("te")){
            int indexOfTe = sb.indexOf("te");
            sb.replace(indexOfTe, indexOfTe + 1, "??");

        }
        result = sb.toString();
        System.out.println(result);

    }

    public static class TestString {
        public void printSomething() {
            System.out.println("it's a text for testing");
        }
    }
}


На выходе: «it's a ??ext for ??esting»
Вроде как и нужно, что же не так?

level07.lesson09.task02

package com.javarush.test.level07.lesson09.task02;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;

/* 5 слов в обратном порядке
Введи с клавиатуры 5 слов в список строк. Выведи их в обратном порядке.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //Напишите тут ваш код
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<String> list = new ArrayList<String>();

        for (int i =0; i < 5; i++){
            String input = read.readLine();
            list.add(input);
        }
        Collections.reverse(list);
        System.out.println(list);

    }
}

Уважаемые! Подскажите почему не проходит проверку код!? результат выводит как требуется!
ввод:
w1
w2
w3
w4
w5
вывод:
[w5, w4, w3, w2, w1]