Смотритель: 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.


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

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

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;
}
}

}
  • ,

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

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;
    }
}

Level36.lesson06.task01 | tast36.task3602

Не получается решить. Условие задачи:
Найти класс по описанию

Описание класса:

1. Реализует интерфейс List;

2. Является приватным статическим классом внутри популярного утилитного класса;

3. Доступ по индексу запрещен — кидается исключение IndexOutOfBoundsException.

Используя рефлекшн (метод getDeclaredClasses), верни подходящий тип в методе getExpectedClass.

Вот мой код:

public static Class getExpectedClass() {

        Class[] classes = Collections.class.getDeclaredClasses();
        for (Class classOfClasses: classes) {
            if (!List.class.isAssignableFrom(classOfClasses))
                continue;

            int modifiersOfClass = classOfClasses.getModifiers();
            boolean hasPrivateStaticModifiers = false;
            if (Modifier.isPrivate(modifiersOfClass) && Modifier.isStatic(modifiersOfClass))
                hasPrivateStaticModifiers = true;

            if (! hasPrivateStaticModifiers)
                continue;

            Method[] methodsOfClass = classOfClasses.getDeclaredMethods();
            boolean isDisallowedAccessByIndex = false;
            for (Method methodOfClass: methodsOfClass) {

                Class[] params = methodOfClass.getParameterTypes();

                boolean hasIntegerParam = false;
                for (Class paramClass: params) {
                    if (paramClass.equals(int.class) || paramClass.equals(Integer.class)) {
                        hasIntegerParam = true;
                        break;
                    }
                }

                boolean throwsIndexOutOfBoundsException = false;
                if (hasIntegerParam) {
                    Object[] inputObjects  = new Object[params.length];
                    for (int i = 0; i < inputObjects.length; i++) {
                        try {
                            boolean isLong = params[i].equals(long.class);
                            boolean isInt = params[i].equals(int.class);
                            boolean isShort = params[i].equals(short.class);
                            boolean isByte = params[i].equals(byte.class);
                            boolean isChar = params[i].equals(char.class);
                            boolean isFloat = params[i].equals(float.class);
                            boolean isDouble = params[i].equals(double.class);
                            boolean isBoolean = params[i].equals(boolean.class);
                            boolean isString = params[i].equals(String.class);


                            if (isLong || isInt || isShort || isByte)
                                inputObjects[i] = 1;
                            else if (isChar)
                                inputObjects[i] = 'a';
                            else if(isFloat || isDouble)
                                inputObjects[i] = 1.0f;
                            else if (isBoolean)
                                inputObjects[i] = true;
                            else if (isString)
                                inputObjects[i] = "aaa";
                            else
                                inputObjects[i] = params[i].newInstance();

                        } catch (InstantiationException|IllegalAccessException e) {
                            e.printStackTrace();
                        }
                    }

                    if (Modifier.isPrivate(methodOfClass.getModifiers()))
                        methodOfClass.setAccessible(true);
                    if (Modifier.isStatic(methodOfClass.getModifiers())) {
                        try {
                            methodOfClass.invoke(null, inputObjects);
                        } catch (IllegalAccessException|InvocationTargetException e) {
                            e.printStackTrace();
                        } catch (IndexOutOfBoundsException e) {
                            throwsIndexOutOfBoundsException = true;
                        }
                    }
                    else {
                        try {
                            Object instanceOfClass = null;
                            try {
                                instanceOfClass = classOfClasses.newInstance();
                            } catch (InstantiationException e) {
                                Constructor constructor = classOfClasses.getDeclaredConstructors()[0];
                                Class[] paramsConstr = constructor.getParameterTypes();
                                Object[] inputObjectsInConstr  = new Object[paramsConstr.length];
                                for (int i = 0; i < inputObjectsInConstr.length; i++) {
                                    try {
                                        boolean isLong = paramsConstr[i].equals(long.class);
                                        boolean isInt = paramsConstr[i].equals(int.class);
                                        boolean isShort = paramsConstr[i].equals(short.class);
                                        boolean isByte = paramsConstr[i].equals(byte.class);
                                        boolean isChar = paramsConstr[i].equals(char.class);
                                        boolean isFloat = paramsConstr[i].equals(float.class);
                                        boolean isDouble = paramsConstr[i].equals(double.class);
                                        boolean isBoolean = paramsConstr[i].equals(boolean.class);
                                        boolean isString = paramsConstr[i].equals(String.class);


                                        if (isLong || isInt || isShort || isByte)
                                            inputObjects[i] = 1;
                                        else if (isChar)
                                            inputObjects[i] = 'a';
                                        else if(isFloat || isDouble)
                                            inputObjects[i] = 1.0f;
                                        else if (isBoolean)
                                            inputObjects[i] = true;
                                        else if (isString)
                                            inputObjects[i] = "aaa";
                                        else
                                            inputObjects[i] = paramsConstr[i].newInstance();

                                    } catch (InstantiationException|IllegalAccessException ex) {
                                        ex.printStackTrace();
                                    }
                                }
                                if (Modifier.isPrivate(constructor.getModifiers()))
                                    constructor.setAccessible(true);
                                try {
                                    instanceOfClass = constructor.newInstance(inputObjectsInConstr);
                                } catch (IllegalAccessException|InstantiationException e1) {
                                    e1.printStackTrace();
                                }

                            }

                            methodOfClass.invoke(instanceOfClass, inputObjects);
                        } catch (IllegalAccessException|InvocationTargetException e) {
                            e.printStackTrace();
                        } catch (IndexOutOfBoundsException e) {
                            throwsIndexOutOfBoundsException = true;
                        }

                    }
                }

                if (hasIntegerParam && throwsIndexOutOfBoundsException)
                    isDisallowedAccessByIndex = true;
            }

            if (isDisallowedAccessByIndex)
                return classOfClasses;
        }


        return null;
    }

Одна строчка выкидывает IllegalAccessException. Такая:

instanceOfClass = constructor.newInstance(inputObjectsInConstr);

level31.lesson02.home01

Никак не пойму, почему не принимает

1. На вход метода main подаются два параметра.
Первый — path — путь к директории, второй — resultFileAbsolutePath — имя файла, который будет содержать результат.
2. Для каждого файла в директории path и в ее всех вложенных поддиректориях выполнить следующее:
2.1. Если у файла длина в байтах больше 50, то удалить его (используй метод FileUtils.deleteFile).
2.2. Если у файла длина в байтах НЕ больше 50, то для всех таких файлов:
2.2.1. Отсортировать их по имени файла в возрастающем порядке, путь не учитывать при сортировке.
2.2.2. Переименовать resultFileAbsolutePath в ‘allFilesContent.txt‘ (используй метод FileUtils.renameFile).
2.2.3. В allFilesContent.txt последовательно записать содержимое всех файлов из п. 2.2.1. Тела файлов разделять «n«.
Все файлы имеют расширение txt.

Требования:
1. Файл, который приходит вторым параметром в main, должен быть переименован в allFilesContent.txt.
2. Нужно создать поток для записи в переименованный файл.
3. Пройдись по всем файлам в директории, которая приходит первым параметром в main, и всех ее поддиректориях. Файлы с размером более 50 байт нужно удалить используя метод FileUtils.deleteFile.
4. Содержимое всех файлов, размер которых не превышает 50 байт, должно быть записано в файл allFilesContent.txt в отсортированном по имени файла порядке.
5. Поток для записи в файл нужно закрыть.


public class Solution {
    public static void main(String[] args) throws IOException {
        File folder = new File(args[0]);
        File resultFileAbsolutePath = new File(args[1]);
        File allFilesContent = new File(resultFileAbsolutePath.getParent() + "/allFilesContent.txt");
        FileUtils.renameFile(resultFileAbsolutePath, allFilesContent);
        FileOutputStream fos = new FileOutputStream(allFilesContent);
        ArrayList<File> list = new ArrayList<>();
        for (File file : folder.listFiles())
            list.add(file);
        ArrayList<File> list1 = new ArrayList<>();
        for (File file : list) {
            if (file.length() > 50) {
                FileUtils.deleteFile(file);
            } else {
                list1.add(file);
            }
        }
        Collections.sort(list1, new Comparator<File>() {
            @Override
            public int compare(File o1, File o2) {
                return o1.toString().compareTo(o2.toString());
            }
        });


        for (File file : list1) {
            BufferedReader reader = new BufferedReader(new FileReader(file));
            String s = "";
            while ((s = reader.readLine()) != null){
                try {
                    fos.write((s + "\n").getBytes());
                }
                catch (FileNotFoundException e)
                {
                    e.printStackTrace();
                }
                finally {
                    fos.close();
                }
            }
            reader.close();

        }
        

    }

Не проходит задача task08.task0812 (РЕШЕНО)

Добрый день. Помогите пожалуйста с задачей. В чём может быть проблема? Условие:
Cамая длинная последовательность
1. Создай список чисел.
2. Добавь в список 10 чисел с клавиатуры.
3. Вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.

Пример для списка 2, 4, 4, 4, 8, 8, 9, 12, 12, 14:
3

Искомое значение равно 3, т.к. самая длинная последовательность повторяющихся чисел состоит из трех четверок.

Требования:
1. Программа должна выводить число на экран.
2. Программа должна считывать значения с клавиатуры.
3. В методе main объяви переменную типа ArrayList с типом элементов Integer и сразу проинициализируй ee.
4. Программа должна добавлять в коллекцию 10 чисел, согласно условию.
5. Программа должна выводить на экран длину самой длинной последовательности

последнее условие не выполняется

package com.javarush.task.task08.task0812;

import java.io.*;
import java.util.*;

/* 
Cамая длинная последовательность
*/
public class Solution {
    public static void main(String[] args) throws IOException {
        //напишите тут ваш код

        BufferedReader bRead = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(Integer.parseInt(bRead.readLine()));
        }

        Map<Integer, Integer> map = new HashMap<>();

        for(Integer i : list){
            if(map.containsKey(i)){
                map.put(i, map.get(i)+1);
            } else {
                map.put(i, 1);
            }
        }

        System.out.println(Collections.max(map.values()));
    }
}