• ,

Не проходит тестирование

package com.javarush.test.level05.lesson12.bonus03;

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

/* Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.
*/

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

int n = scanner.nextInt();
if (n > 0)
{
int[] arr = new int[n];
for (int i = 0; i < n; i++)
{
arr[i] = scanner.nextInt();
maximum = arr[0];
if (maximum <= arr[i])
maximum = arr[i];
}//напишите тут ваш код
System.out.println(maximum);
}
}
}
  • ,

level24.lesson14.big01 задание 11

Помогите, перепробовал несколько вариантов.
В main всё отрабатывает правильно.
Что упустил?

Задание 11
Еще Canvas понадобится два метода, напиши их.
а) метод clear()
Этот метод будет очищать матрицу, чтобы на ней снова можно было рисовать.
Например заменить все символы матрицы на пробелы.

б) метод print()
Этот метод отрисовывает матрицу на экран.
Тут уже ты должен сам разобраться: вывести набор символов не так уж и сложно.
Не забудь добавить пару пустых строк в конце, чтобы матрицы выведенные в разное время не слипались.


package com.javarush.test.level24.lesson14.big01;

public class Canvas {
    private int width, height;
    private char[][] matrix;

    void clear() {
        for (int i = 0; i < getHeight(); i++) {
            for (int j = 0; j < getWidth(); j++) {
                matrix[i][j] = ' ';
            }
        }
    }

    void print() {
        for (char[] y : matrix) {
            for (char x : y) {
                System.out.print(x);
            }
            System.out.println();
        }
        System.out.println();
        System.out.println();
    }

    public void setPoint(double x, double y, char c) {
        int x1 = (int) Math.round(x);
        int y1 = (int) Math.round(y);

        if (x1 < 0 || y1 < 0 || y1 > matrix.length || x1 > matrix[0].length) return;

        matrix[y1][x1] = c;
    }

    public void drawMatrix(double x, double y, int[][] matrix, char c) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j] != 0) setPoint(x + j, y + i, c);
            }
        }
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public char[][] getMatrix() {
        return matrix;
    }

    public void setMatrix(char[][] matrix) {
        this.matrix = matrix;
    }

    public Canvas(int width, int height) {

        this.width = width;
        this.height = height;

        this.matrix = new char[height][width];
    }
}
  • ,

level24.lesson14.big01 задание 11

Помогите, перепробовал несколько вариантов.
В main всё отрабатывает правильно.
Что упустил?

Задание 11
Еще Canvas понадобится два метода, напиши их.
а) метод clear()
Этот метод будет очищать матрицу, чтобы на ней снова можно было рисовать.
Например заменить все символы матрицы на пробелы.

б) метод print()
Этот метод отрисовывает матрицу на экран.
Тут уже ты должен сам разобраться: вывести набор символов не так уж и сложно.
Не забудь добавить пару пустых строк в конце, чтобы матрицы выведенные в разное время не слипались.


package com.javarush.test.level24.lesson14.big01;

public class Canvas {
    private int width, height;
    private char[][] matrix;

    void clear() {
        for (int i = 0; i < getHeight(); i++) {
            for (int j = 0; j < getWidth(); j++) {
                matrix[i][j] = ' ';
            }
        }
    }

    void print() {
        for (char[] y : matrix) {
            for (char x : y) {
                System.out.print(x);
            }
            System.out.println();
        }
        System.out.println();
        System.out.println();
    }

    public void setPoint(double x, double y, char c) {
        int x1 = (int) Math.round(x);
        int y1 = (int) Math.round(y);

        if (x1 < 0 || y1 < 0 || y1 > matrix.length || x1 > matrix[0].length) return;

        matrix[y1][x1] = c;
    }

    public void drawMatrix(double x, double y, int[][] matrix, char c) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j] != 0) setPoint(x + j, y + i, c);
            }
        }
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public char[][] getMatrix() {
        return matrix;
    }

    public void setMatrix(char[][] matrix) {
        this.matrix = matrix;
    }

    public Canvas(int width, int height) {

        this.width = width;
        this.height = height;

        this.matrix = new char[height][width];
    }
}

level06.lesson11.bonus02, не проходит проверку

Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс 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
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String grandFName = reader.readLine();
        Cat catGrandF = new Cat(grandFName);

        String grandMName = reader.readLine();
        Cat catGrandM = new Cat(grandMName);

        String fatherName = reader.readLine();
        Cat catFather = new Cat(fatherName, null, catGrandF);

        String motherName = reader.readLine();
        Cat catMother = new Cat(motherName, catGrandM, null);

        String sonName = reader.readLine();
        Cat catSon = new Cat(sonName, catMother, catFather);

        String daughterName = reader.readLine();
        Cat catDaughter = new Cat(daughterName, catMother, catFather);

        System.out.println(catGrandF);
        System.out.println(catGrandM);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDaughter);
    }

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

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

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

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

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
Данные дополнены пробелами до их длины

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

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

public class Solution {

    static ArrayList<String> list = new ArrayList<String>();
    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name = reader.readLine();
        reader.close();
        InputStream inputStream = new FileInputStream(name);
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "WINDOWS-1251");
        BufferedReader file = new BufferedReader(inputStreamReader);

        while (file.ready())
        {
            String str = file.readLine();

            String y = str.substring(0, 8).trim();

            if (args[1].equals(y))
            {
                if (args[0].equals("-u")) {
                    String productName = args[2];
                    for (int k = 3; k < args.length - 2; k++)
                    {
                        productName += " " + args[k];
                    }
                    str = String.format("%-8.8s%-30.30s%-8.8s%-4.4s", args[1], productName, args[args.length - 2], args[args.length - 1]);
                    list.add(str);
                }

                else continue;
            }

            else list.add(str);
        }

        file.close();
        inputStreamReader.close();
        inputStream.close();

        OutputStream outputStream = new FileOutputStream(name);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "WINDOWS-1251");
        BufferedWriter fileWR = new BufferedWriter(outputStreamWriter);

        for (int i = 0; i < list.size(); i++)
        {
            if (list.get(i).equals("")) continue;
            fileWR.write(String.format("%s%n", list.get(i)));
        }

        fileWR.close();
        outputStreamWriter.close();
        outputStream.close();
    }
}
            else list.add(str);
        }

        file.close();
        inputStreamReader.close();
        inputStream.close();

        OutputStream outStream = new FileOutputStream(name);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outStream, "WINDOWS-1251");
        BufferedWriter fileWR = new BufferedWriter(outputStreamWriter);

        for (int i = 0; i < list.size(); i++)
        {
            if (list.get(i).equals("")) continue;
            fileWR.write(String.format("%s%n", list.get(i)));
        }

        fileWR.close();
        outputStreamWriter.close();
        outStream.close();
    }
}
  • ,

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
Данные дополнены пробелами до их длины

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

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

public class Student {

    static ArrayList<String> list = new ArrayList<String>();
    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name = reader.readLine();
        reader.close();
        InputStream inputStream = new FileInputStream(name);
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "WINDOWS-1251");
        BufferedReader file = new BufferedReader(inputStreamReader);

        while (file.ready())
        {
            String str = file.readLine();

            String y = str.substring(0, 8).trim();

            if (args[1].equals(y))
            {
                if (args[0].equals("-u")) {
                    String productName = args[2];
                    for (int k = 3; k < args.length - 2; k++)
                    {
                        productName += " " + args[k];
                    }
                    str = String.format("%-8.8s%-30.30s%-8.8s%-4.4s", args[1], productName, args[args.length - 2], args[args.length - 1]);
                    list.add(str);
                }

                else continue;
            }

            else list.add(str);
        }

        file.close();
        inputStreamReader.close();
        inputStream.close();

        OutputStream outStream = new FileOutputStream(name);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outStream, "WINDOWS-1251");
        BufferedWriter fileWR = new BufferedWriter(outputStreamWriter);

        for (int i = 0; i < list.size(); i++)
        {
            if (list.get(i).equals("")) continue;
            fileWR.write(String.format("%s%n", list.get(i)));
        }

        fileWR.close();
        outputStreamWriter.close();
        outStream.close();
    }
}
  • ,

level06.lesson11.bonus02

Выводит верный результат, но проверку не проходит :(
Не поможете разобраться?

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

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

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс 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
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String grandpaName = reader.readLine();
Cat catGrandpa = new Cat (grandpaName);

String grandmaName = reader.readLine();
Cat catGrandma = new Cat (grandmaName);

String fatherName = reader.readLine();
Cat catFather = new Cat (fatherName, null, catGrandpa);

String motherName = reader.readLine();
Cat catMother = new Cat(motherName, catGrandma, null);

String sonName = reader.readLine();
Cat catSon = new Cat (sonName, catMother, catFather);

String daughterName = reader.readLine();
Cat catDaughter = new Cat(daughterName, catMother, catFather);

System.out.println(catGrandpa);
System.out.println(catGrandma);
System.out.println(catFather);
System.out.println(catMother);
System.out.println(catSon);
System.out.println(catDaughter);
}

public static class Cat
{
private String name;
private Cat parent1;
private Cat parent2;

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

Cat(String name, Cat parent1, Cat parent2)
{
this.name = name;
this.parent1 = parent1;
this.parent2 = parent2;
}

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

}
}

}
  • ,

level22.lesson09.task02

Дайте проверочную мапу.

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

import java.util.Map;

/* Формируем Where
Сформируйте часть запроса WHERE используя StringBuilder.
Если значение null, то параметр не должен попадать в запрос.
Пример:
{"name", "Ivanov", "country", "Ukraine", "city", "Kiev", "age", null}
Результат:
"name = 'Ivanov' and country = 'Ukraine' and city = 'Kiev'"
*/
public class Solution {

    public static StringBuilder getCondition(Map<String, String> params)
    {
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<String, String> entry:
             params.entrySet())
        {
            if(entry.getValue() != null)
                sb.append(entry.getKey() + " = '" + entry.getValue() + "' and ");
        }
        return new StringBuilder(sb.substring(0, sb.length()-5));
    }

}


PS может ли быть проблема в конкатенации в аппенде?
  • ,

level12.lesson12.bonus03 что не так?

Не могу понять, что в итоге должен выводить метод getMinimumAndIndex?

package com.javarush.test.level12.lesson12.bonus03;

/* Задача по алгоритмам
Написать метод, который возвращает минимальное число в массиве и его позицию (индекс).
*/

import java.util.Arrays;

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 = getMinimumAndIndex(data);

        System.out.println("Minimum is " + result.x);
        System.out.println("Index of minimum element is " + result.y);
    }

    public static Pair<Integer, Integer> getMinimumAndIndex(int[] array)
    {
        if (array == null || array.length == 0)
        {
            return new Pair<Integer, Integer>(null, null);
        }

        //Напишите тут ваше решение
        int min = 0;
        for(int i = 0; i<array.length; i++)
        {
            if (min > array[i])
                min = array[i];
        }

        return new Pair<Integer, Integer>(min, array[min]);
    }


    public static class Pair<X, Y>
    {
        public X x;
        public Y y;

        public Pair(X x, Y y)
        {
            this.x = x;
            this.y = y;
        }
    }
}
  • ,

level20.lesson10.home07

НАтолкните на мысль, знаю, что Нити и потоки не сериализуются, помечаем такие поля transient. Для повторной записи в файл нам нужно не только прочитать объект но и запомнить путь, следовательно делаем новое поле для созранения имени файла, иначе никак из потока этот путь не достанем. Сериализуем, тестируем, тест проходит успешно, но не принимает.

P.S. еще один вопрос: если я помечаю поле transeint и пользуюсь defaultwriteobject у меня выскакивает NotActiveException: not in call to writeObject, почему?

package com.javarush.test.level20.lesson10.home07;

import java.io.*;
import java.nio.channels.FileChannel;

/* Переопределение сериализации в потоке
Сериализация/десериализация Solution не работает.
Исправьте ошибки не меняя сигнатуры методов и класса.
Метод main не участвует в тестировании.
Написать код проверки самостоятельно в методе main:
1) создать экземпляр класса Solution
2) записать в него данные  - writeObject
3) сериализовать класс Solution  - writeObject(ObjectOutputStream out)
4) десериализовать, получаем новый объект
5) записать в новый объект данные - writeObject
6) проверить, что в файле есть данные из п.2 и п.5
*/
public class Solution implements Serializable, AutoCloseable {


    public static void main(String[] args) throws Exception {
        Solution solution = new Solution("test.txt");

        solution.writeObject("Privet");


        ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("test1.txt"));
        solution.writeObject(objectOutputStream);


        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("test1.txt"));
        Solution solution1 = (Solution) objectInputStream.readObject();
        solution1.writeObject("Privet1");
    }


    private  transient FileOutputStream stream;
    public String fileName;

    public Solution(String fileName) throws FileNotFoundException {
        this.stream = new FileOutputStream(fileName);
        this.fileName = fileName;
    }

    public Solution() {
    }

    public void writeObject(String string) throws IOException {
        stream.write(string.getBytes());
        stream.write("\n".getBytes());
        stream.flush();
    }

    private void writeObject(ObjectOutputStream out) throws IOException {
        out.writeObject(this);
        out.writeObject(fileName);
    }

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.readObject();
        fileName = (String) in.readObject();
        stream = new FileOutputStream(this.fileName);
    }

    @Override
    public void close() throws Exception {
        System.out.println("Closing everything!");
        stream.close();
    }
}
  • ,

level08.lesson08.task05 - не проходит проверку на сервере

В общем выполнял я задание и с толкнулся с тем что программа работает, но проверку не проходит:
package com.javarush.test.level08.lesson08.task05;

import java.util.*;

/* Удалить людей, имеющих одинаковые имена
Создать словарь (Map<String, String>) занести в него десять записей по принципу «фамилия» - «имя».
Удалить людей, имеющих одинаковые имена.
*/

public class Solution
{
    /*public static void main(String[] args)
    {
        removeTheFirstNameDuplicates(createMap());
    }*/
    public static HashMap<String, String> createMap()
    {
        HashMap<String,String> map = new HashMap<String,String>();//напишите тут ваш код

        map.put("Бидоп","Бисопролол");
        map.put("Нипертен","Бисопролол");
        map.put("Коронал","Бисопролол");
        map.put("Розукард","Розувастатин");
        map.put("Крестор","Розувастатин");
        map.put("Метокард","Метопролол");
        map.put("Беталок","Метопролол");
        map.put("Эгилок","Метопролол");
        map.put("Липримар","Аторвастатин");
        map.put("Торвакард","Аторвастатин");
        return map;//напишите тут ваш код

    }

    public static void removeTheFirstNameDuplicates(HashMap<String, String> map)
    {
        Set<String> set = new HashSet<String>();
        Iterator<String> iterator = map.values().iterator();
        String line;
        while (iterator.hasNext()) {
            line=iterator.next();
            if (set.contains(line)) iterator.remove();
            else set.add(line);
        }//напишите тут ваш код
       // System.out.println(map); //test

    }

    public static void removeItemFromMapByValue(HashMap<String, String> map, String value)
    {
        HashMap<String, String> copy = new HashMap<String, String>(map);
        for (Map.Entry<String, String> pair: copy.entrySet())
        {
            if (pair.getValue().equals(value))
                map.remove(pair.getKey());
        }
    }
}

Пример вывода:
{Коронал=Бисопролол, Эгилок=Метопролол, Розукард=Розувастатин, Липримар=Аторвастатин}
Я не нашел что-то чтобы кто-то так делал, и не понял в чем косяк такого подхода. Носом ткните в общем!

(решено) com.javarush.test.level18.lesson10.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
Данные дополнены пробелами до их длины

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

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

public class Solution
{
    static String filename;

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

        if (args.length > 0)
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            filename = reader.readLine();
            reader.close();

            if (args[0].equals("-u")) updateRec(makeID(args[1]), makeRec(args[2], args[3], args[4]));
            else if (args[0].equals("-d")) deleteRec(makeID(args[1]));

        }
    }

    public static void updateRec(String id, String record) throws IOException
    {
        BufferedReader inputReader = new BufferedReader(new FileReader(filename));
        ArrayList<String> records = new ArrayList<String>();

        String line;
        while ((line = inputReader.readLine()) != null)
        {
            records.add(line);
        }
        inputReader.close();

        for (int i = 0; i < records.size(); i++)
        {
            if (records.get(i).contains(id))
            {
                records.set(i, id + record);
                break;
            }
        }

        BufferedWriter eraser = new BufferedWriter(new FileWriter(filename, false));
        for (int i = 0; i < records.size(); i++)
        {
            eraser.write("");
        }
        eraser.close();

        BufferedWriter writer = new BufferedWriter(new FileWriter(filename, true));

        for (int i = 0; i < records.size(); i++)
        {
            if (i != records.size() - 1) writer.write(records.get(i) + "\n");
            else writer.write(records.get(i));
        }
        writer.close();
    }

    public static void deleteRec(String id) throws IOException
    {
        BufferedReader inputReader = new BufferedReader(new FileReader(filename));
        ArrayList<String> records = new ArrayList<String>();

        String line;
        while ((line = inputReader.readLine()) != null)
        {
            records.add(line);
        }
        inputReader.close();

        for (int i = 0; i < records.size(); i++)
        {
            if (records.get(i).contains(id))
            {
                records.set(i, "");
                break;
            }
        }

        BufferedWriter eraser = new BufferedWriter(new FileWriter(filename, false));
        for (int i = 0; i < records.size(); i++)
        {
            eraser.write("");
        }
        eraser.close();

        BufferedWriter writer = new BufferedWriter(new FileWriter(filename, true));

        for (int i = 0; i < records.size(); i++)
        {
            if (i != records.size() - 1) writer.write(records.get(i) + "\n");
            else writer.write(records.get(i));
        }
        writer.close();

    }

    public static String makeID(String id)
    {
        String ID = id;

        if (ID.length() < 8)
        {
            for (int i = 0; i < 8 - (ID.length() - 1); i++)
            {
                ID += " ";
            }
        }
        return ID;
    }

    public static String makeRec(String s1, String s2, String s3)
    {
        String record;

        if (s1.length() < 30)
        {
            String spaces = "";
            for (int i = 0; i < 30 - s1.length(); i++)
            {
                spaces += " ";
            }
            s1 += spaces;
        }
        else if (s1.length() > 30) s1 = s1.substring(0, 30);

        if (s2.length() < 8)
        {
            String spaces = "";
            for (int i = 0; i < 8 - (s2.length()); i++)
            {
                spaces += " ";
            }
            s2 += spaces;
        }
        else if (s2.length() > 8) s2 = s2.substring(0, 8);

        if (s3.length() < 4)
        {
            String spaces = "";
            for (int i = 0; i < 4 - (s3.length()); i++)
            {
                spaces += " ";
            }
            s3 += spaces;
        }
        else if (s3.length() > 4) s3 = s3.substring(0, 4);

        record = s1 + s2 + s3;
        return record;
    }

}

Как обычно: у меня все работает, а сервер не принимает