task.task20.task2002 Не хочет принимать гад

Буду очень благодарен, если кто-то все-таки сможет сказать, что же тут не так

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

    }

    public static class JavaRush {
        public List<User> users = new ArrayList<>();
        SimpleDateFormat form = new SimpleDateFormat("dd MM yyyy");

        public void save(OutputStream outputStream) throws Exception {
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream));
            int size = users.size();
            writer.println(size);
            if (size>0)
            {
                for(User us : users)
                {
//                    пишем имя
                    writer.println(us.getFirstName());

//                    пишем фамилию
                    writer.println(us.getLastName());

//                    пишем дату
                    writer.println(form.format(us.getBirthDate()));

//                    пишем пол
                    writer.println(us.isMale());

//                    пишем страну
                    writer.println(us.getCountry());


                }
            }
        }

        public void load(InputStream inputStream) throws Exception {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                while (reader.ready())
                {  int size = Integer.parseInt(reader.readLine());
                    for(int i = 0;i<size;i++) {
                        User us = new User();

                        String name = reader.readLine();
                        if(name.equals("null"))
                        us.setFirstName(null);
                        else  us.setFirstName(name);

                        String last = reader.readLine();
                        if (last.equals("null"))
                        us.setLastName(null);
                        else us.setLastName(last);

                        String bd = reader.readLine();
                        if (bd.equals("null"))
                            us.setBirthDate(null);
                        else
                        us.setBirthDate(form.parse(bd));

                        String male = reader.readLine();
                        if (male.equals("true")) us.setMale(true);
                        else  us.setMale(false);

                        String cont = reader.readLine();
                        if (cont.equals("null"))
                        us.setCountry(null);
                        else us.setCountry(User.Country.valueOf(cont));
                        users.add(us);
                    }
                }
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            JavaRush javaRush = (JavaRush) o;

            return users != null ? users.equals(javaRush.users) : javaRush.users == null;

        }

        @Override
        public int hashCode() {
            return users != null ? users.hashCode() : 0;
        }
    }
}
  • ,

task15.task1516

Почему валидатор не принимает?

Значения по-умолчанию
1. Создать 7 public полей класса. Убедитесь, что они инициализируются дефолтными значениями.
intVar типа int
doubleVar типа double
DoubleVar типа Double
booleanVar типа boolean
ObjectVar типа Object
ExceptionVar типа Exception
StringVar типа String
2. В методе main вывести их значения в заданном порядке.

package com.javarush.task.task15.task1516;
/* 
Значения по-умолчанию
*/
public class Solution {
     static int intVar;
     static double doubleVar;
     static Double DoubleVar ;
     static boolean booleanVar;
     static Object ObjectVar;
     static Exception ExceptionVar;
     static String StringVar;
    public static void main(String[] args) {
        System.out.println(intVar);
        System.out.println(doubleVar);
        System.out.println(DoubleVar);
        System.out.println(booleanVar);
        System.out.println(ObjectVar);
        System.out.println(ExceptionVar);
        System.out.println(StringVar);
    }
}

level18.lesson10.bonus02 и level18.lesson10.bonus03 (Бредовый результат - принят валидатором) + ошибка сервера.

Для выполнения этих двух задач полезно почитать 16-ю главу Философия Джава, минимум до Writer и Reader.
Также можно почитать теорию 19-го уровня.
bouns02

Вот такой результат был принят. Печалька.
Сделал задачу со второго раза, переписав код с нуля.
1. Читал символы через FileReader в StringBuilder.
2. Из StringBuilder прочитать строки. Пример есть в лекциях.
3. Найти максимальный ID — творчество.
4. Обработать входные данные — творчество.
5. Дописать увеличенный ID и данные в конец файла. Я делал через FileWriter. При чем дописано без перевода на следующую строку.

Без блоков try-catch. Всё в теле main.

Ошибка сервера в моём случае — лишние файлы в папке.
bonus03 с параметрами -u 1984798 Шорты пляжные red 159.00 12

исходные данные


ну это же ни в какие ворота. и bonus03 с первого раза прошел… Печаль, печаль, печаль.

bonus02
package com.javarush.test.level18.lesson10.bonus02;

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-c  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
String result = String.format("%n%-8d%-30.30s%-8.2f%-4d",id, strToAppend, Float.valueOf(args[args.length-2]), Integer.valueOf(args[args.length-1]));
Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        reader.close();
        InputStreamReader fileReader = new FileReader(fileName);
        StringBuilder stringBuilder = new StringBuilder();
        int count;
        while ((count = fileReader.read()) > -1)
        {
            stringBuilder.append((char) count);
        }
        fileReader.close();

        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        ArrayList<Integer> stringArrayList = new ArrayList<>();
        while (true)
        {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                stringArrayList.add(Integer.parseInt(line.substring(0,8).trim()));
            }
        }
        Collections.sort(stringArrayList);
        bufferedReader.close();
        isr.close();

        Integer maxIDplusOne = stringArrayList.get(stringArrayList.size() - 1)+1;
        if (maxIDplusOne.toString().length()<8) {
            stringBuilder.append(maxIDplusOne);
            for (int i = maxIDplusOne.toString().length(); i < 8; i++)
            {
                stringBuilder.append(" ");
            }
        } else stringBuilder.append(maxIDplusOne);
        String arguments = "";
        if (args[0].equals("-c")) {

            for (int i = 1; i < args.length-2; i++)
            {
                arguments += args[i] + " ";

            }
            if (arguments.length()>30)
            {
                arguments = arguments.substring(0,30);
            }
            else if (arguments.length() < 30)
            {
                for (int i = arguments.length(); i < 30; i++)
                arguments += " ";
            }
            if (args[args.length-2].length()<8)
            {
                arguments += args[args.length-2];
                for (int i = args[args.length-2].length(); i < 8; i++)
                    arguments += " ";
            } else arguments += args[args.length-2];
            if (args[args.length-1].length()<4)
            {
                arguments += args[args.length-1];
                for (int i = args[args.length-1].length(); i < 4; i++)
                    arguments += " ";
            } else arguments += args[args.length-1];
        }
        FileWriter fileWriter = new FileWriter(fileName);
        fileWriter.write(stringBuilder.append(new StringBuilder(arguments).toString()).toString());
        fileWriter.close();
    }
}


bonus03
package com.javarush.test.level18.lesson10.bonus03;

/* Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-u  - обновляет данные товара с заданным id
-d  - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
String result = String.format("%n%-8d%-30.30s%-8.2f%-4d",id, strToAppend, Float.valueOf(args[args.length-2]), Integer.valueOf(args[args.length-1]));

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String fileName = reader.readLine();
            reader.close();
            InputStreamReader fileReader = new FileReader(fileName);
            StringBuilder stringBuilder = new StringBuilder();
            int count;
            while ((count = fileReader.read()) > -1) {
                stringBuilder.append((char) count);
            }
            fileReader.close();

            switch (args[0]) {
                case "-u": {
                    String arguments = "";
                    for (int i = 2; i < args.length-2; i++)
                    {
                        arguments += args[i] + " ";
                    }
                    String result = String.format("%n%-8.8s%-30.30s%-8.8s%-4.4s",args[1], arguments, args[args.length-2], args[args.length-1]);
                    Integer id = Integer.parseInt(args[1]);
                    FileWriter fileWriter = new FileWriter(fileName);
                    fileWriter.write(update(stringBuilder, id, result).toString());
                    fileWriter.close();
                }
                    break;
                case "-d": {
                    Integer id = Integer.parseInt(args[1]);
                    FileWriter fileWriter = new FileWriter(fileName);
                    fileWriter.write(delete(stringBuilder, id).toString());
                    fileWriter.close();
                }
                    break;
                default:
                    throw new Exception("wrong argument");
            }
        } catch (Exception e) {e.printStackTrace();}
    }
    private static StringBuilder delete(StringBuilder stringBuilder, Integer id) throws Exception{
        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder stringBuilderTemp = new StringBuilder();
        while (true) {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                Integer idx = Integer.parseInt(line.substring(0, 8).trim());
                if (!id.equals(idx)) stringBuilderTemp.append(line).append("\n");
            }
        }
        bufferedReader.close();
        isr.close();
        return stringBuilderTemp;
    }
    private static StringBuilder update(StringBuilder stringBuilder, Integer id, String result) throws Exception{
        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder stringBuilderTemp = new StringBuilder();
        while (true) {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                Integer idx = Integer.parseInt(line.substring(0, 8).trim());
                if (!id.equals(idx)) stringBuilderTemp.append(line).append("\n");
                else stringBuilderTemp.append(result).append("\n");
            }
        }
        bufferedReader.close();
        isr.close();
        return stringBuilderTemp;
    }
}

level15.lesson12.home09

Вроде работает, но не принимает. Взгляните на код, о, Великие Гуру.
import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        //add your code here
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String input = reader.readLine();
        char[] charArray = input.toCharArray();
        List<String> parametersList = new ArrayList<>();
        int parametersListIndex = 0;
        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] == '?' || charArray[i] == '&') { 
                parametersList.add("");
                while (true) { 
                    i++;
                    if (charArray[i] == '&' || charArray[i] == '=') {
                        parametersListIndex++;
                        break;
                    }
                    else {
                        parametersList.set(parametersListIndex, parametersList.get(parametersListIndex) + charArray[i]);
                    }
                }
                if (charArray[i] == '&')
                    i--;
            }
        }
        for (String s : parametersList) {
            System.out.print(s + " ");
        }
        for (String s : parametersList) {
            System.out.println();
            if (s.equals("obj")) {
                try {
                    alert(Double.parseDouble(objAlert(input)));
                }
                catch (Exception e) {
                    alert(objAlert(input));
                }
            }
        }
    }

    public static String objAlert(String input) {
        int objIndex = input.indexOf("obj=");
        String value = "";
        for (int i = objIndex + 4; i < input.length(); i++) {
            if (input.charAt(i) == '&')
                break;
            else {
                value += input.charAt(i);
            }
        }
        return value;
    }

    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alert(String value) {
        System.out.println("String " + value);
    }
}

com.javarush.test.level13.lesson11.bonus01; Сортировка четных чисел из файла Не принимает!

Я уже устал воевать. Что ему не нравится?

import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class Solution
{
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));// Инициализация буфера
        InputStream file = new FileInputStream(reader.readLine());                   //Создаем поток из файла
        ArrayList<Integer> numbersList = new ArrayList<Integer>();                   //Лист для хранения чисел
        String bufferString = "";                                                    //Буфер для хранения многознач. чисел
        while (file.available()>0){                                                  //Если не конец файла то..
            char tempChar =(char)file.read();                                        //Читаем символ

            if(tempChar!='\n' && tempChar!='\r' && tempChar!=' '){                    //Если, не пробел и не перевод коредки
                bufferString=bufferString+tempChar;                                   //То добавляем в буфер этот символ
            }
            else{                                                                     //Иначе
                if(bufferString.length()>0) {                                         //Если строка не пустая
                    if(Integer.parseInt(bufferString)%2==0) {                         //И если число в ней четное
                        numbersList.add(Integer.parseInt(bufferString));              //То добавляем его в лист
                    }
                    bufferString = "";                                                //Если нечетное, очищаем буфер
                }                                                                     //это число нам не нужно
            }
        }


        Collections.sort(numbersList);                                                //Сортируем получивийся лист
        for(Integer i : numbersList){                                                 //Выводим его поэлементно
            System.out.println(i);                                                    //Каждое число с новой строки
        }
        file.close();                                                                 //Закрываем
        reader.close();                                                               //потоки
    }
}


Файл
4
7
6
9
222
-8
25
Выход
-8
4
6
222
Нормально принимает отрицательные значения, нули многозначные числа, всё сортирует, выводит, но сервер не принимает

Помогите найти ошибку

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

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

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String fileName1 = reader.readLine();
        String fileName2 = reader.readLine();
        String fileName3 = reader.readLine();

        FileInputStream filereader = new FileInputStream(fileName1);
        FileOutputStream file2writer = new FileOutputStream(fileName2);
        FileOutputStream file3writer = new FileOutputStream(fileName3);

        while (filereader.available() > 0)
        {
            if (filereader.available() % 2 == 0)
            {
                byte[] buffer = new byte[filereader.available() / 2];
                byte[] buffer1 = new byte[filereader.available() / 2];
                int count = filereader.read(buffer);
                int count1 = filereader.read(buffer1);
                file2writer.write(buffer, 0, count / 2);
                file3writer.write(buffer1, 0, count1 / 2);
            } else
            {
                byte[] buffer = new byte[filereader.available() / 2 + 1];
                byte[] buffer1 = new byte[filereader.available() / 2];
                int count = filereader.read(buffer);
                int count1 = filereader.read(buffer1);
                file2writer.write(buffer, 0, count);
                file3writer.write(buffer1, 0, count1);
            }
        }
        reader.close();
        file2writer.close();
        filereader.close();
        file3writer.close();
    }

com.javarush.test.level18.lesson03.task04, помогите найти ошибку.

/* Самые редкие байты
Ввести с консоли имя файла
Найти байты, которые встречаются в файле меньше всего раз.
Вывести их на экран через пробел
Закрыть поток ввода-вывода
*/

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

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        FileInputStream filereader = new FileInputStream(fileName);
        String res = "";

        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Integer> reslist = new ArrayList<Integer>();

        while (filereader.available() > 0){

            list.add(filereader.read());
        }
        
        int[] count = new int[list.size()];
        for (int i = 0; i < list.size(); i++)
        {
            count[i] = 0;
            for (int j = 0; j < list.size();j++)
            {
                if (list.get(i) == list.get(j)) count[i]++;
            }
        }
        
        int min = count[0];
        for (int h : count)
        {
            if (h < min) min = h;
        }
        
        for (int i = 0; i < list.size(); i++)
        {
            if (!reslist.contains(list.get(i))&&count[i] == min) reslist.add(list.get(i));
        }
        for (int y : reslist)
        {
            res = y + " ";
        }
        System.out.println(res);
        reader.close();
        filereader.close();
    }
}

level17.lesson10.home09 не принимает на сервере=(

public class Solution {
    public static List<String> allLines = new ArrayList<String>();
    public static List<String> forRemoveLines = new ArrayList<String>();

    public static void main(String[] args)  {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        try
        {


            String firstFileName = reader.readLine();
            String secondFileName = reader.readLine();
            reader.close();

            BufferedReader firstFilereader = new BufferedReader(new FileReader(firstFileName));
            BufferedReader secondFilereader = new BufferedReader(new FileReader(secondFileName));

            String firstFileline;
            String secondFileline;

            while ((firstFileline = firstFilereader.readLine()) != null)
            {
                allLines.add(firstFileline);
            }
            firstFilereader.close();

            while ((secondFileline = firstFilereader.readLine()) != null)
            {
                forRemoveLines.add(secondFileline);
            }
            secondFilereader.close();

            Solution solution = new Solution();
            solution.joinData();
        }
        catch (Exception e){

        }
    }

    public void joinData () throws CorruptedDataException {

        if(allLines.containsAll(forRemoveLines)){
            allLines.removeAll(forRemoveLines);
        }
        else {
            allLines.clear();
            throw new CorruptedDataException();
        }

    }
}


Что я сделал не так?(
  • ,

level17.lesson10.home04 в чем мои рассуждения не верны?

package com.javarush.test.level17.lesson10.home04;

/* Синхронизированные методы
Установить модификатор synchronized только тем методам, которым необходимо
*/

public class Solution {
    private double param = Math.random();

    //синхронизируем так как выполняется метод 3 c переменной класса param
    private void method0() {
        double i = method3();
    }

    // синхронизируем так как вызывается метод 0 который вызывает переменную класса param
    protected synchronized void method1(String param1) {
        Solution solution = new Solution();
        solution.method0();
    }
    // синхронизируем так как может инкриментироваться переменная класса param приведенная к int
    public synchronized void  method2(int param1) {
        param1++;
    }
    // синхронизируется так как вызывается переменная класса param
    synchronized double method3() {
        double random = Math.random();
        return random + param;
    }
    // не синхронизируется потому что в классе не обращается к переменным, ничего не меняет, просто создает объект.
    private void method4() {
        new StringBuilder().append(1).append(1).append(1).append(1);
    }

    //синхронизируется так как может получить переменную класса param приведенную к String
    synchronized protected void method5(String param2) {
        new StringBuffer().append(param2).append(param2).append(param2);
    }
    //синхронизируется так как может получить переменную класса param приведенную к int + вызывает метод 7
    synchronized public String method6(int param2) {
        System.out.println("Thinking....");
        method7(5e-2);
        return "Got it!";
    }
    //синхронизируется так как может получить переменную класса param
    synchronized String method7(double param2) {
        return "" + param2;
    }
}