level15.lesson12.home01 Не проходит тестирование, хотя работает согласно условиям


package com.javarush.test.level15.lesson12.home01;


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

/* Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово "exit".
2. Для каждого значения, кроме "exit", вызвать метод print. Если значение:
2.1. содержит точку '.', то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
*/

public class Solution {
    public static void main(String[] args) throws IOException {
        //напиште тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> values = new ArrayList<String>();
        String input = reader.readLine();
        values.add(input);
        while(!input.equals("exit")){
            input = reader.readLine();
            values.add(input);
        }

        for(int i = 0; i < values.size() - 1; i++ ){
            input = values.get(i);
            if(isNumeric(input)){
                if(input.contains(".")){
                    Double doubleNumber = Double.parseDouble(input);
                    print(doubleNumber);
                }
                else {
                    Integer number = Integer.parseInt(input);
                    if (number > 0 && number < 128){
                        short shortNumber = Short.parseShort(input);
                        print(shortNumber);
                    }
                    else if (number > 0){
                        print(number);
                    }
                    else print(input);
                }

            }
            else print(input);

        }

    }

    public static boolean isNumeric (String str){
        return str.matches("\\d+(\\.\\d+)?");
    }

    public static void print(Double value) {
        System.out.println("Это тип Double, значение " + value);
    }

    public static void print(String value) {
        System.out.println("Это тип String, значение " + value);
    }

    public static void print(short value) {
        System.out.println("Это тип short, значение " + value);
    }

    public static void print(Integer value) {
        System.out.println("Это тип Integer, значение " + value);
    }
}



Код выполняет требования задачи, но не проходит тестирование. Помогите пожалуйста разобраться, в чем дело.
  • ,

level07.lesson12.bonus03

Здравствуйте! Дано условие:
/* Задача по алгоритмам
Задача: Написать программу, которая вводит с клавиатуры 20 чисел и выводит их в убывающем порядке.
*/
Необходимо написать метод sort(), который «переворачивает» массив — в нем и только в нем указано "//вводите ваш код тут". Остальной код дан изначально — и для ввода 20 чисел, и для последовательного вывода элементов массива посредством цикла.
Я реализовал sort() следующим образом:

public static void sort(int[] array)
    {
        for (int i = 0; i < array.length - i; i++)
        {
            int temp = array[array.length - 1 - i];
            array[array.length - 1 - i] = array[i];
            array[i] = temp;
        }
    }

Программа работает, но не проходит тестирование. Куда копать?
  • ,

Не прошла тестирование level08.lesson11.home09

Доброго времени суток! Не проходит тестирование задача, хоть работает как и просят! Наслышан о проблемах с 8 джавой, так как проект на 7 работает, но не думаю, что в данном случае это играет роль, так как была бы ошибка, что задача не компилируется на сервере. Обратил на это внимание потому, что у меня в Intellij в методе isDateOdd перечеркнуты Date() и getYear() с претензией, что данная форма использования класса устарела, но это, если я правильно понимаю, связано с появлением более совершенной библиотеки для дат и времени в 8 джаве. Тогда что не так с кодом?? Помогите!

package com.javarush.test.level08.lesson11.home09;

import java.util.Date;

/* Работа с датой
1. Реализовать метод isDateOdd(String date) так, чтобы он возвращал true, если количество дней с начала года — нечетное число, иначе false
2. String date передается в формате MAY 1 2013
Не забудьте учесть первый день года.
Пример:
JANUARY 1 2000 = true
JANUARY 2 2020 = false
*/

public class Solution
{
public static void main(String[] args)
{
String date = «MAY 1 2013»;
System.out.println(date + " = " + isDateOdd(date));
}

public static boolean isDateOdd(String date)
{
Date currentTime = new Date(date);
Date yearStartTime = new Date(currentTime.getYear(),0,1,0,0,0);
long msDay = 24 * 60 * 60 * 1000;
long dayCountCT = (currentTime.getTime()/msDay);
long dayCountYST = (yearStartTime.getTime()/msDay);
int dayCount = (int) (dayCountCT — (dayCountYST — 1));
return (dayCount % 2 != 0);
}
}
  • ,

level07.lesson12.home02 не проходит тестирование

Не проходит тестирование
package com.javarush.test.level07.lesson12.home02;

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

/* Переставить M первых строк в конец списка
Ввести с клавиатуры 2 числа N  и M.
Ввести N строк и заполнить ими список.
Переставить M первых строк в конец списка.
Вывести список на экран, каждое значение с новой строки.
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        //напишите тут ваш код
        int a1 = Integer.parseInt(reader.readLine());
        int a2 = Integer.parseInt(reader.readLine());
        ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < a1; i++)
        {
            list.add("Hello Java " + i);
        }

        for (int i = 0; i < a2; i++)
        {
            String tmp = list.get(a2 - i - 1);
            list.add(a1, tmp);
        }

        for (int i = 0; i < a2; i++)
        {
            int j = a2 - i - 1;
            list.remove(j);
        }

        for (int i = 0; i < list.size(); i++)
        {
            System.out.println(list.get(i));
        }

    }
}

Возможные вопросы к коду:
— нет четкого указания заполнять список цифрами;
— нет четкого указания заполнять список с клавиатуры;
— да, ни как у всех, через list.get(list.remove(0)). В условии это не запрещено.
Код рабочий, выводит по условию задачи.

level09.lesson02.task03 по какой-то причине не проходит тестирование

Условие задачи:
Метод должен вернуть номер строки кода, из которого вызвали этот метод
Написать пять методов, которые вызывают друг друга. Метод должен вернуть номер строки кода, из которого вызвали этот метод. Воспользуйся функцией: element.getLineNumber().
Сам, собственно говоря, код:
public class Solution {
    public static void main(String[] args) throws Exception {
        method1();
    }

    public static int method1() {
        method2();
        int lineNumber = 0;
        StackTraceElement stackTraceElement[] = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTraceElement[2];
        lineNumber = element.getLineNumber();
        return lineNumber > 0 ? lineNumber : 0;
    }

    public static int method2() {
        method3();
        int lineNumber = 0;
        StackTraceElement stackTraceElement[] = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTraceElement[2];
        lineNumber = element.getLineNumber();
        return lineNumber > 0 ? lineNumber : 0;
    }

    public static int method3() {
        method4();
        int lineNumber = 0;
        StackTraceElement stackTraceElement[] = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTraceElement[2];
        lineNumber = element.getLineNumber();
        return lineNumber > 0 ? lineNumber : 0;
    }

    public static int method4() {
        method5();
        int lineNumber = 0;
        StackTraceElement stackTraceElement[] = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTraceElement[2];
        lineNumber = element.getLineNumber();
        return lineNumber > 0 ? lineNumber : 0;
    }

    public static int method5() {
        int lineNumber = 0;
        StackTraceElement stackTraceElement[] = Thread.currentThread().getStackTrace();
        StackTraceElement element = stackTraceElement[2];
        lineNumber = element.getLineNumber();
        return lineNumber > 0 ? lineNumber : 0;
    }
}

Подскажите, люди добрые, в чем проблема моего кода?
  • ,

package com.javarush.test.level19.lesson10.bonus01;

Ребята подскажите что не так с задачей?? вроде и логика правильная и ответы сходятся, а проверку не проходит (((…


package com.javarush.test.level19.lesson10.bonus01;

import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/* Отслеживаем изменения
Считать в консоли 2 имени файла - file1, file2.
Файлы содержат строки, file2 является обновленной версией file1, часть строк совпадают.
Нужно создать объединенную версию строк, записать их в список lines
Операции ADDED и REMOVED не могут идти подряд, они всегда разделены SAME
Пример:
[Файл 1]
строка1
строка2
строка3

[Файл 2]
строка1
строка3
строка4

[Результат - список lines]
SAME строка1
REMOVED строка2
SAME строка3
ADDED строка4
*/

public class Solution {
    public static List<LineItem> lines = new ArrayList<LineItem>();

    public static void main(String[] args)throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader file1 = new BufferedReader(new InputStreamReader(new FileInputStream(reader.readLine()), "Windows-1251"));
        BufferedReader file2 = new BufferedReader(new InputStreamReader(new FileInputStream(reader.readLine()), "Windows-1251"));

        List<String> list1 =new LinkedList<>();
        List<String> list2 =new LinkedList<>();
        String text;
        while ((text = file1.readLine()) != null){
            list1.add(text);
        }

        while ((text = file2.readLine()) != null){
            list2.add(text);
        }

        Type type = null;


        for (int i = 0 , count = 0; i < list1.size(); i++)
        {

            if (type == null){
                if (list2.size() > 0 && list1.get(i).equals(list2.get(count))){
                    lines.add(new LineItem(Type.SAME , list1.get(i)));
                    type = Type.SAME;
                    count++;
                }else if (list2.size() > 1 && list1.get(i).equals(list2.get(count + 1))){
                    lines.add(new LineItem(Type.ADDED , list2.get(count)));
                    type = Type.ADDED;
                    count++;
                }else {
                    lines.add(new LineItem(Type.REMOVED , list1.get(i)));
                    type = Type.REMOVED;
                }
            }else if (type == Type.SAME){
                if (list2.size() > (count + 1) && list1.get(i).equals(list2.get(count + 1))){
                    lines.add(new LineItem(Type.ADDED , list2.get(count)));
                    type = Type.ADDED;
                    count++;
                }else {
                    lines.add(new LineItem(Type.REMOVED , list1.get(i)));
                    type = Type.REMOVED;
                }
            }else {
                lines.add(new LineItem(Type.SAME , list1.get(i)));
                type = Type.SAME;
                count++;
            }

        
            if (i == (list1.size() - 1) && count < list2.size()){
                lines.add(new LineItem(Type.ADDED , list2.get(count)));
                type = Type.ADDED;
                count++;
            }

        }


        for (LineItem l : lines){
            System.out.println(l.toString());
        }

    }


    public static enum Type {
        ADDED,        //добавлена новая строка
        REMOVED,      //удалена строка
        SAME          //без изменений
    }

    public static class LineItem {
        public Type type;
        public String line;

        public LineItem(Type type, String line) {
            this.type = type;
            this.line = line;
        }

        public String toString(){

            if (this.type == Type.ADDED){
                return "ADDED " + this.line;
            }else if (this.type == Type.REMOVED){
                return "REMOVED " + this.line;
            }else {
                return "SAME " + this.line;
            }
        }
    }
}

level06.lesson08.task05;

/* Класс StringHelper
Cделать класс StringHelper, у которого будут 2 статических метода:
String multiply(String s, int count) – возвращает строку повторенную count раз.
String multiply(String s) – возвращает строку повторенную 5 раз.
Пример:
Амиго -> АмигоАмигоАмигоАмигоАмиго
*/

public class StringHelper
{
public static String multiply(String s)
{
String result = "";
//Напишите тут ваш код
result = s;
for(int i = 0; i < 5; i++)
System.out.print(result);
System.out.println("\n");

return result;
}

public static String multiply(String s, int count)
{
String result = "";
//Напишите тут ваш код
int n;
result = s;
n = count;
for (int i = 0; i < n; i++)
System.out.print(result);
System.out.println("\n");

return result;
}
}

Помогите пожалуйста, программа работает, но не компилируется на сервере!
  • ,

level08.lesson11.home09 работает

package com.javarush.test.level08.lesson11.home09;
/* Работа с датой
1. Реализовать метод isDateOdd(String date) так, чтобы он возвращал true, если количество дней с начала года - нечетное число, иначе false
2. String date передается в формате MAY 1 2013
Пример:
JANUARY 1 2000 = true
JANUARY 2 2020 = false
*/

import java.util.Date;

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

    public static boolean isDateOdd(String date)
    {
        return (new GregorianCalendar(new Date(date).getYear(),new Date(date).getMonth(),new Date(date).getDate()).get(Calendar.DAY_OF_YEAR)%2==0);
    }
}


Опубликовал и тут же нашел ошибку… и исправил, правильно говорят — объясни кошке и все поймешь. Хотя не для всех задач это работает.

Сейчас решение уже рабочее, если кто хочет может взять себе… надо только добавить один символ :)
  • ,

level34.lesson02.task03 или Мозг Рака

Господа, крайне редко прошу помощи, но с этой задачей у меня мозги вскипели. Может кто увидит ошибку?

UPD: код удалила, т.к. был получен ответ от администрации
  • ,

level18.lesson10.home10 не проходит тестирование

/* Собираем файл
Собираем файл из кусочков
Считывать с консоли имена файлов
Каждый файл имеет имя: [someName].partN. Например, Lion.avi.part1, Lion.avi.part2, ..., Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом «end»
В папке, где находятся все прочтенные файлы, создать файл без приставки [.partN]. Например, Lion.avi
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, ..., в конце — последнюю.
Закрыть все потоки ввода-вывода
Темповые файлы создавать нельзя, т.к. на сервере заблокирована возможность создания каких любо файлов
*/

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

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

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

        while (true) {
            String inputString = reader.readLine();

            if(inputString.equals("end")) break;

            list.add(inputString);
        }
        reader.close();

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

        for(String s : list) {
            Integer number = Integer.parseInt(s.split("part")[1]);

            map.put(s, number);
        }

        ArrayList<Map.Entry<String, Integer>> sortedList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());

        Collections.sort(sortedList, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o1.getValue() - o2.getValue();
            }
        });

        String finalFileName = list.get(0).split("\\.part")[0];



        for(Map.Entry<String, Integer> item : sortedList) {
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(("D:\\" + finalFileName + ".txt"), true));
            BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("D:\\" + item.getKey() + ".txt"));

            byte[] bytes = new byte[bufferedInputStream.available()];

            bufferedInputStream.read(bytes);

            bufferedOutputStream.write(bytes);
            bufferedOutputStream.close();

            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(("D:\\" + finalFileName + ".txt"), true));
            bufferedWriter.newLine();
            bufferedWriter.close();

            bufferedInputStream.close();
        }
    }
}
  • ,

Не проходит тестирование level17.lesson10.bonus02 [РЕШЕНО]

CRUD 2
CrUD Batch — multiple Creation, Updates, Deletion
!!! РЕКОМЕНДУЕТСЯ выполнить level17.lesson10.bonus01 перед этой задачей!!!

Программа запускается с одним из следующих наборов параметров:
-c name1 sex1 bd1 name2 sex2 bd2…
-u id1 name1 sex1 bd1 id2 name2 sex2 bd2…
-d id1 id2 id3 id4…
-i id1 id2 id3 id4…
Значения параметров:
name — имя, String
sex — пол, «м» или «ж», одна буква
bd — дата рождения в следующем формате 15/04/1990
-с — добавляет всех людей с заданными параметрами в конец allPeople, выводит id (index) на экран в соответствующем порядке
-u — обновляет соответствующие данные людей с заданными id
-d — производит логическое удаление всех людей с заданными id
-i — выводит на экран информацию о всех людях с заданными id: name sex bd

id соответствует индексу в списке
Формат вывода даты рождения 15-Apr-1990
Все люди должны храниться в allPeople
Порядок вывода данных соответствует вводу данных
Обеспечить корректную работу с данными для множества нитей (чтоб не было затирания данных)
Используйте Locale.ENGLISH в качестве второго параметра для SimpleDateFormat

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

    static {
        allPeople.add(Person.createMale("Иванов Иван", new Date()));  //сегодня родился    id=0
        allPeople.add(Person.createMale("Петров Петр", new Date()));  //сегодня родился    id=1
    }

    public static void main(String[] args) {

        if (args[0].equals("-c")) {
            create(args);
        }

        if (args[0].equals("-u")) {
            update(args);
        }

        if (args[0].equals("-d")) {
            delete(args);
        }

        if (args[0].equals("-i")) {
            info(args);
        }
    }


    private static synchronized void info(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

        for (int i = 1; i < args.length; i++) {
            if (allPeople.get(Integer.parseInt(args[i])).getSex().equals(Sex.MALE)) {
                System.out.println(allPeople.get(Integer.parseInt(args[i])).getName() +
                        " м " + simpleDateFormat.format(allPeople.get(Integer.parseInt(args[i])).getBirthDay()));
            } else if (allPeople.get(Integer.parseInt(args[i])).getSex().equals(Sex.FEMALE)) {
                System.out.println(allPeople.get(Integer.parseInt(args[i])).getName() +
                        " ж " + simpleDateFormat.format(allPeople.get(Integer.parseInt(args[i])).getBirthDay()));
            }
        }
    }

    private static synchronized void delete(String[] args) {
        for (int i = 1; i < args.length; i++) {
            allPeople.get(Integer.parseInt(args[i])).setBirthDay(null);
            allPeople.get(Integer.parseInt(args[i])).setName(null);
            allPeople.get(Integer.parseInt(args[i])).setSex(null);
        }
    }

    private static synchronized void update(String[] args) {
        for (int i = 1; i < args.length; i += 4) {
            allPeople.get(Integer.parseInt(args[i])).setBirthDay(new Date(args[i + 3]));
            allPeople.get(Integer.parseInt(args[i])).setName(args[i + 1]);

            if (args[i + 2].equals("м")) {
                allPeople.get(Integer.parseInt(args[i])).setSex(Sex.MALE);
            } else if (args[i + 2].equals("ж")) {
                allPeople.get(Integer.parseInt(args[i])).setSex(Sex.FEMALE);
            }
        }
    }

    private static synchronized void create(String[] args) {
        for (int i = 1; i < args.length; i += 3) {
            if (args[i + 1].equals("м")) {
                Person male = Person.createMale(args[i], new Date(args[i + 2]));
                allPeople.add(male);
                System.out.println(allPeople.indexOf(male));
            } else if (args[i + 1].equals("ж")) {
                Person female = Person.createFemale(args[i], new Date(args[i + 2]));
                allPeople.add(female);
                System.out.println(allPeople.indexOf(female));
            }
        }
    }
}

Не проходит тестирование задача повышенной сложности level06.lesson11.bonus02

package com.javarush.test.level06.lesson11.bonus02;

import java.io.IOException;

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: маму, папу, сына, дочь, бабушку(мамина мама) и дедушку(папин папа).
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
Cat name is дедушка Вася, no mother, no father
Cat name is бабушка Мурка, no mother, no father
Cat name is папа Котофей, no mother, father is дедушка Вася
Cat name is мама Василиса, mother is бабушка Мурка, no father
Cat name is сын Мурчик, mother is мама Василиса, father is папа Котофей
Cat name is дочь Пушинка, mother is мама Василиса, father is папа Котофей
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        Cat grandMother = new Cat("бабушка Мурка", null, null);
        Cat grandFather = new Cat("дедушка Вася", null, null);
        Cat mother = new Cat("мама Василиса", grandMother, null);
        Cat father = new Cat("папа Котофей", null, grandFather);
        Cat daughter = new Cat("дочь Пушинка", mother, father);
        Cat son = new Cat("сын Мурчик", mother, father);

        System.out.println(grandFather);
        System.out.println(grandMother);
        System.out.println(father);
        System.out.println(mother);
        System.out.println(son);
        System.out.println(daughter);
    }

    public static class Cat
    {
        private String name = null;
        private Cat father = null;
        private Cat mother = null;

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

        @Override
        public String toString()
        {
            if (mother == null && father == null) return "Cat name is " + name + ", no mother, no father";
            else if (father == null) return "Cat name is " + name + ", mother is " + mother.name + ", no father";
            else if (mother == null) return "Cat name is " + name + ", no mother, father is " + father.name;
            else return "Cat name is " + name + ", mother is " + mother.name + ", father is " + father.name;
        }
    }
}