Смотритель: hubert
  • ,

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.


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