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

Неизвестная ошибка! Такого раньше никогда не было, спасите.

Ребят, при сдаче задачи выдаёт «Неизвестная ошибка во время проверки задания».Что это может быть?
А при проверке через валидатор на сайте пишет «Возникла ошибка с кодом: UNKNOWN_ERROR»
Спасите!

Задача HTML Editor (2) — task32.task3209 .
  • ,

task18.task1827 CrUD прайсы


package com.javarush.task.task18.task1827;

/* 
Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id — 8 символов.
productName — название товара, 30 chars (60 bytes).
price — цена, 8 символов.
quantity — количество, 4 символа.
-c — добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины.
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
*/
import java.io.*;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String FILE_NAME = bufferedReader.readLine();
        String productNAME = "";
        for (int i = 1; i < args.length-2; i++) {
            productNAME += args[i]+" ";
        }
        if (productNAME.length()>29){
           productNAME = productNAME.substring(0,29);
        }
        String price  = args[args.length-2];
        if (price.length()>7){
            price = price.substring(0,7);
        }
        String qaluty = args[args.length-1];
        if (qaluty.length()>3){
            qaluty = qaluty.substring(0,3);
        }

        if (args[0].equals("-c")) {
            BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME));
            String a = "";
            while (reader.ready()) {
                a = reader.readLine();
            }
            reader.close();
            String ID = "";
            try {
                String[] strings = a.split("\\D+");
                ID = strings[0];
            } catch (Exception e) {
            }
            if (ID.length() > 7) {
                ID = ID.substring(0, 7);
            }
            int countID = Integer.parseInt(ID) + 1;
            String text = countID + productNAME + price + qaluty;
            BufferedWriter bw = new BufferedWriter(new FileWriter(FILE_NAME, true));
            bw.newLine();
            bw.write(text);
            bw.flush();
        }
    }
}

Написал код, затестил его на своем компе. Ищет последнюю строчку и прибавляет 1 к ID. Вроде-бы антибугурт, но валидатор не хочет принимать. Подскажите что не правильно.
  • ,

task2001. Просто ничего не хочет писаться в файл.

Читаем и пишем в файл: Human
Реализуй логику записи в файл и чтения из файла для класса Human.
Поле name в классе Human не может быть пустым.
Метод main реализован только для вас и не участвует в тестировании.

Требования:
1. Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если список assets пустой.
2. Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если поле name и список assets не пустые.
3. Класс Solution.Human не должен поддерживать интерфейс Serializable.
4. Класс Solution.Human должен быть публичным.
5. Класс Solution.Human не должен поддерживать интерфейс Externalizable.

package com.javarush.task.task20.task2001;

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

/* 
Читаем и пишем в файл: Human
*/
public class Solution {
    public static void main(String[] args) {
        //исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу
        try {

            File save = File.createTempFile("/home/shasik/save.txt", null);
            OutputStream outputStream = new FileOutputStream(save);
            InputStream inputStream = new FileInputStream(save);

            Human ivanov = new Human("Ivanov", new Asset("home"), new Asset("car"));
            ivanov.save(outputStream);
            outputStream.flush();

            Human somePerson = new Human();
            somePerson.load(inputStream);
            //check here that ivanov equals to somePerson - проверьте тут, что ivanov и somePerson равны
            inputStream.close();

        } catch (IOException e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with my file");
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with save/load method");
        }
    }


    public static class Human {
        public String name;
        public List<Asset> assets = new ArrayList<>();

        public Human() {
        }

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

            Human human = (Human) o;

            if (name != null ? !name.equals(human.name) : human.name != null) return false;
            return assets != null ? assets.equals(human.assets) : human.assets == null;

        }

        @Override
        public int hashCode() {
            int result = name != null ? name.hashCode() : 0;
            result = 31 * result + (assets != null ? assets.hashCode() : 0);
            return result;
        }

        public Human(String name, Asset... assets) {
            this.name = name;
            if (assets != null) {
                this.assets.addAll(Arrays.asList(assets));
            }
        }

        public void save(OutputStream outputStream) throws Exception {
            PrintWriter writer = new PrintWriter(outputStream);

            String isNamePresent = this.name != null ? "yes" : "no";
            writer.print(isNamePresent);

            if (name != null) {
                writer.print(this.name);
            }

            String isAssetsPresent = this.assets != null ? "yes" : "no";
            writer.print(isAssetsPresent);

            if (assets != null) {
                for (Asset lis : this.assets) {
                    writer.println(lis.getName());
                    writer.println(lis.getPrice());
                }
            }
        }

        public void load(InputStream inputStream) throws Exception {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

            String isNamePresent = reader.readLine();
            if (isNamePresent.equals("yes")) {
                this.name = reader.readLine();
            }

            String isAssetsPresent = reader.readLine();
            if (isAssetsPresent.equals("yes")) {
                ArrayList<Asset> temp = new ArrayList<>();
                while (reader.ready()) {
                    Asset tempo = new Asset(reader.readLine());
                    tempo.setPrice(Double.parseDouble(reader.readLine()));
                }
                this.assets.addAll(temp);
            } else {
                this.assets = null;
            }
        }
    }
}


Выскакивает ошибка

Oops, something wrong with save/load method
java.lang.NullPointerException
	at com.javarush.task.task20.task2001.Solution$Human.load(Solution.java:97)
	at com.javarush.task.task20.task2001.Solution.main(Solution.java:25)

Process finished with exit code 0


В процессе дебага увидел, что ошибка выскакивает в load куске. Начал разбираться почему. Ну, как бы причина в заголовке. Ни единого байта он не хочет писать в файл. Подскажите, я что то не так делаю, или в чём проблема?
  • ,

com.javarush.task.task18.task1827 не проходит валидацию

Прайсы
CrUD для таблицы внутри файла.
Считать с консоли имя файла для операций CrUD.
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id — 8 символов.
productName — название товара, 30 chars (60 bytes).
price — цена, 8 символов.
quantity — количество, 4 символа.
-c — добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле.
В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины.
Пример:
19846 Шорты пляжные синие 159.00 12
198478 Шорты пляжные черные с рисунко173.00 17
19847983Куртка для сноубордистов, разм10173.991234
Требования:
1. Программа должна считать имя файла для операций CrUD с консоли.
2. При запуске программы без параметров список товаров должен остаться неизменным.
3. При запуске программы с параметрами "-c productName price quantity" в конец файла должна добавится новая строка с товаром.
4. Товар должен иметь следующий id, после максимального, найденного в файле.
5. Форматирование новой строки товара должно четко совпадать с указанным в задании.

package com.javarush.task.task18.task1827;

/* 
Прайсы
*/

import java.io.*;

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

        try {
            String idStr = "", productName, price, quantity;
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String name = reader.readLine();
            reader.close();

            if (args.length > 0) {
                if (args[0].equals("-c")) {
                    productName = args[1];
                    price = args[2];
                    quantity = args[3];

                    productName = addSpaces(productName, 30);
                    price = addSpaces(price, 8);
                    quantity = addSpaces(quantity, 4);
                    idStr = getNewId(name);
                    idStr = addSpaces(idStr, 8);

                    FileOutputStream out = new FileOutputStream(name, true);
                    String forOut = "\n" + idStr + productName + price + quantity;
                    out.write(forOut.getBytes());
                    out.close();
                }
            }
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }

    public static String addSpaces(String field, int size) {
        String newField = field;

        if (field.length() < size) {
            for (int i = 0; i < size - field.length(); i++) {
                newField = newField + " ";
            }
        } else if (field.length() > size) {
            newField = field.substring(0, size);
        }
        return newField;
    }

    public static String getNewId(String filename) {
        String newId = "0";

        try {
            BufferedReader in = new BufferedReader(new FileReader(filename));
            while (in.ready()) {
                String id = in.readLine().substring(0, 8);
                if (Integer.parseInt(id.trim()) > Integer.parseInt(newId.trim())) {
                    newId = id;
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        newId = Integer.toString(Integer.parseInt(newId.trim())+1);
        return newId;
    }
}


Подскажите, плиз, что тут не так? Валидацию вообще не проходит, но все прекрасно работает

task14.task1415 (level14.lesson08.home07)

Добрый день, уважаемые джаварашевцы и джаварашатессы!
Опять столкнулся со стандартной проблемой. Решение работает, но не принимается. Обсуждение задачи изучил, на свежую голову с утра посмотрел. Проблему не вижу. Хотел пожаловаться на разработчиков в ЕСПЧ, но сначала решил спросить подсказку у сообщества.


package com.javarush.task.task14.task1415;

import java.util.ArrayList;
import java.util.List;

/* 
Клининговый центр
1. Реализовать метод cleanAllApartments.
Для каждого объекта из apartments:
2. Для однокомнатных квартир (Apt1Room) вызвать метод clean1Room.
т.е. если объект типа Apt1Room, то вызвать у него метод clean1Room.
3. Для двухкомнатных квартир (Apt2Room) вызвать метод clean2Rooms
т.е. если объект типа Apt2Room, то вызвать у него метод clean2Rooms.
4. Для трехкомнатных квартир (Apt3Room) вызвать метод clean3Rooms
т.е. если объект типа Apt3Room, то вызвать у него метод clean3Rooms.

*/

public class Solution {
    public static void main(String[] args) {
        List<Apartment> apartments = new ArrayList<Apartment>();
        apartments.add(new Apt1Room());
        apartments.add(new Apt2Room());
        apartments.add(new Apt3Room());

        cleanAllApartments(apartments);
    }

    public static void cleanAllApartments(List<Apartment> apartments)
    {
        //написать тут вашу реализацию пунктов 1-4
        for (Apartment ap : apartments)
        {
            if (ap instanceof Apt1Room)
            {
                ((Apt1Room) ap).clean1Room();
            } else if (ap instanceof Apt2Room)
            {
                ((Apt2Room) ap).clean2Rooms();
            } else if (ap instanceof Apt3Room)
            {
                ((Apt3Room) ap).clean3Rooms();
            }
        }
    }

    static interface Apartment {
    }

    static class Apt1Room implements Apartment {
        static void clean1Room() {
            System.out.println("1 room is cleaned");
        }
    }

    static class Apt2Room implements Apartment {
        static void clean2Rooms() {
            System.out.println("2 rooms are cleaned");
        }
    }

    static class Apt3Room implements Apartment {
        static void clean3Rooms() {
            System.out.println("3 rooms are cleaned");
        }
    }
}


Вывод в консоль

1 room is cleaned
2 rooms are cleaned
3 rooms are cleaned

Ошибка валидатора: В методе cleanAllApartments для всех однокомнатных аппартаментов(Apt1Room)
содержащихся в списке необходимо вызвать метод clean1Room.
Такая ошибка для каждого вида аппартаментов.
Шутку про игры на третьем этаже, упоминавшуюся в обсуждении задачи тоже не понял.

С уважением,
Зеленая лягушка.
  • ,

task0529 - Консоль-копилка

«Дорогая передача», в условии задачи сказано: «Вводить с клавиатуры числа...»
Ни слова не сказано, что эти числа должны быть целыми!
У меня складывались вещественные — они мне больше нравятся с детства, — поэтому задача не проходила проверку, хотя в консоли IntelliJ IDEA всё суммировалось отлично с признаком нормального завершения исполнения.
После пятой неудачной попытки сдать задачу и уймой потраченного времени я решил заменить вещественные на целые. В результате с 6-й попытки задача прошла проверку.
Пожалуйста, пишите условие задачи корректно, или измените критерии проверки. Первое сделать проще, очевидно.
  • ,

task08.task0824 Собираем семейство

Ребята, помогите решить задачу Собираем семейство. (Уже смотрел на этом ресурсе примеры попыток решения этой задачи, но для себя ответа пока так и не нашел).
Задача выводит результат для дедов, бабок, бати и мамы. А вот на детях почему-то ошибки, дебаггер ругается на конструктор для детей

import java.util.ArrayList;

public class Solution {
public static void main(String[] args) {
ArrayListchildren = new ArrayList<>(); //Создаем список детей для мамы и бати
Human child1 = new Human(«сынка1», true, 25);
Human child2 = new Human(«дочка», false, 20);
Human child3 = new Human(«сынка2», true, 17);
children.add(child1);
children.add(child2);
children.add(child3);

ArrayListfatherParents = new ArrayList<>(); // Создаем список детей для Деда1 и Бабки1 (их сын будет батя)
ArrayListmotherParents = new ArrayList<>(); // Создаем список детей для Деда2 и Бабки 2 (их дочка будет мамка)

Human father = new Human(«Батя», true, 50, children);
Human mother = new Human(«Мамка», false, 50, children);

fatherParents.add(father); // Добавили батю в список детей для Деда1 и Бабки1
motherParents.add(mother); // Добавили мамку в список детей для Деда2 и Бабки2

Human grandpa1 = new Human(«Дед1», true, 75, fatherParents);
Human grandpa2 = new Human(«Дед2», true, 78, motherParents);
Human grandma1 = new Human(«Бабка1», false, 75, fatherParents);
Human grandma2 = new Human(«Бабка2», false, 78, motherParents);

System.out.println(grandpa1);
System.out.println(grandma1);
System.out.println(grandpa2);
System.out.println(grandma2);
System.out.println(father);
System.out.println(mother);
System.out.println(child1);
System.out.println(child2);
System.out.println(child3);
}

public static class Human {
String name;
boolean sex;
int age;
ArrayListchildren;

public Human(String name, boolean sex, int age, ArrayListchildren) { //Конструктор для тех у кого есть дети(мама, батя, бабки и дедки)
this.name = name;
this.sex = sex;
this.age = age;
this.children = children;
}

public Human(String name, boolean sex, int age) { // Конструктор для детей
this.name = name;
this.sex = sex;
this.age = age;
}

public String toString() {
String text = "";
text += «Имя: » + this.name;
text += ", пол: " + (this.sex? «мужской»: «женский»);
text += ", возраст: " + this.age;

int childCount = this.children.size();
if (childCount > 0) {
text += ", дети: " + this.children.get(0).name;

for (int i = 1; i < childCount; i++) {
Human child = this.children.get(i);
text += ", " + child.name;
}
}
return text;
}
}

}

task19.task1924 не проходит условие вывода результата в консоль

Замена чисел
1. В статическом блоке инициализировать словарь map парами [число-слово] от 0 до 12 включительно.
Например, 0 — «ноль«, 1 — «один«, 2 — «два»
2. Считать с консоли имя файла, считать содержимое файла.
3. Заменить все числа на слова используя словарь map.
4. Результат вывести на экран.
5. Закрыть потоки

    > { статический блок map. }
    > 
    >  public static void main(String[]
    > args) throws IOException {
    >         BufferedReader reader = new BufferedReader(new
    > InputStreamReader(System.in));
    >         Reader fileReader = new BufferedReader(new
    > FileReader(reader.readLine()));
    >         reader.close();
    >         String str = "" ;
    >         int cheslo = fileReader.read();
    >         while ( cheslo != -1)
    >         {
    >             char carter = (char)cheslo;
    >             str = str + carter;
    >             cheslo = fileReader.read();
    >         }
    >            String[] stringsArrey = str.split(" ");
    >         str = "";
    >             for (String indexString: stringsArrey )
    >             {
    >                     try
    >                     {
    >                         int allInt = Integer.parseInt(indexString);
    >                         for (Map.Entry spisok : map.entrySet())
    >                         {
    >                             if (allInt ==(int) spisok.getKey())
    >                             {
    >                                 indexString = spisok.getValue().toString();
    >                                 str = str+" " + indexString;
    >                             }
    >                         }
    >                     }
    >                  catch (NumberFormatException e) {
    >                     str = str + " " + indexString;
    >                 }
    >             }
    >             fileReader.close();
    >             str = str.substring(1);
    >             System.out.println(str);
    >     } }
    > 
    > Результат вывода: ��� ����� один ����,
    > � ��� ��� - двенадцать . ����������
    > ����� ��� file1. 110 - ��� �����
    > 
    > Могу считывание произвести в
    > кириллице, но тогда не проходит
    > условие по использованию класса
    > FileReader


  • ,

Хотелось бы узнать поподробнее

от не дает мне покоя один в опрос. Каким образом работает сей чудесный код (который описан в задаче)
FileInputStream inputStream = new FileInputStream("c:/data.txt");
        // Создаем поток-записи-байт-в-файл
        FileOutputStream outputStream = new FileOutputStream("c:/result.txt");
        byte[] buffer = new byte[1000];
        if (inputStream.available()>0) {
            //читаем весь файл одним куском
            int count = inputStream.read(buffer);
            outputStream.write(buffer, 0, count);
        }

        inputStream.close();
        outputStream.close();

Вопрос такой.Каким образом масиву
byte[] buffer = new byte[1000];

Присваивается значение от («c:/data.txt»);
  • ,

Помогите понять в чём проблема task19.task1917

Приветствую. Не могу понять почему не принимает сервер.

Свой FileWriter
Реализовать логику FileConsoleWriter.
Класс FileConsoleWriter должен содержать приватное поле FileWriter fileWriter.
Класс FileConsoleWriter должен содержать все конструкторы, которые инициализируют fileWriter для записи.
При записи данных в файл, должен дублировать эти данные на консоль.
Требования:

1. Класс FileConsoleWriter должен содержать приватное поле FileWriter fileWriter, которое не должно быть сразу проинициализировано.
2. Класс FileConsoleWriter должен иметь пять конструкторов которые инициализируют fileWriter для записи.
3. Класс FileConsoleWriter должен содержать метод write(char[] cbuf, int off, int len) throws IOException, в котором данные для записи должны записываться в fileWriter и дублироваться в консоль.
4. Класс FileConsoleWriter должен содержать метод write(int c) throws IOException, в котором данные для записи должны записываться в fileWriter и дублироваться в консоль.
5. Класс FileConsoleWriter должен содержать метод write(String str) throws IOException, в котором данные для записи должны записываться в fileWriter и дублироваться в консоль.
6. Класс FileConsoleWriter должен содержать метод write(String str, int off, int len) throws IOException, в котором данные для записи должны записываться в fileWriter и дублироваться в консоль.
7. Класс FileConsoleWriter должен содержать метод write(char[] cbuf) throws IOException, в котором данные для записи должны записываться в fileWriter и дублироваться в консоль.
8. Класс FileConsoleWriter должен содержать метод close() throws IOException, в котором должен вызываться такой же метод поля fileWriter.

public class FileConsoleWriter extends FileWriter
{
    private FileWriter fileWriter;

    FileConsoleWriter(String fileName) throws IOException
    {
        super(fileName);
       fileWriter = new FileWriter(fileName);
    }

    FileConsoleWriter(String fileName, boolean append) throws IOException
    {
        super(fileName, append);
        fileWriter = new FileWriter(fileName, append);
    }

    FileConsoleWriter(File file) throws IOException
    {
        super(file);
        fileWriter = new FileWriter(file);
    }

    FileConsoleWriter(File file, boolean append) throws IOException
    {
        super(file, append);
        fileWriter = new FileWriter(file, append);
    }

    FileConsoleWriter(FileDescriptor fd) throws IOException
    {
        super(fd);
        fileWriter = new FileWriter(fd);
    }

    public void write(int c) throws IOException
    {
        fileWriter.write©;
        System.out.println©;
    }

    public void write(String string) throws IOException
    {
        fileWriter.write(string);
        System.out.println(string);
    }

    public void write(char[] cbuf) throws IOException
    {
        fileWriter.write(cbuf);
        System.out.println(cbuf);
    }

    public void write(String s, int off, int len) throws IOException
    {
        fileWriter.write(s, off, len);
        System.out.println(s.substring(off, len));
    }

    public void write(char[] cbuf, int off, int len) throws IOException
    {
        fileWriter.write(cbuf, off, len);
        String s = "";
        for (int i = off; i < len; ++i)
        {
            s += cbuf[i];
        }
        System.out.println(s.toCharArray());
    }

    public void close() throws IOException
    {
        super.close();
    }



    public static void main(String[] args) throws Exception
    {
        FileConsoleWriter fileConsoleWriter = new FileConsoleWriter("D:\\Users7\\Admin\\Desktop\\1.txt");
        fileConsoleWriter.write("write(String):");
        fileConsoleWriter.write(111);
        char[] buff = "write(char[]):".toCharArray();
        fileConsoleWriter.write(buff);
        fileConsoleWriter.write(buff, 6, 8);
        fileConsoleWriter.write("write(String, int off, int len):", 1, 6);
        fileConsoleWriter.close();
    }

}

task.task08.task0812 Помогите, пожалуйста.

package com.javarush.task.task08.task0812;

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

/*
Cамая длинная последовательность
Cамая длинная последовательность
1. Создай список чисел.
2. Добавь в список 10 чисел с клавиатуры.
3. Вывести на экран длину самой длинной последовательности повторяющихся чисел в списке.

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

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

public class Solution {
public static void main(String[] args) throws IOException {
ArrayList list = new ArrayList<>();
int count = 1;
int max = 1;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 10; i++) {
int a = Integer.parseInt(bf.readLine());
list.add(a);
if (list.get(i).equals(i — 1))
count++;
else count = 1;
}
if (count > max)
max = count;
System.out.println(max);
}
}
  • ,

task29.task2909 Рефакторинг (13) HELP не проходит (Решено)

Доброго дня. Помогите плиз, уже устал от этих танцев с бубном. Вроде всё как надо, а тестирование не проходит.

Разберись с кодом пакета user (пользователь).
13.1. Извлечение метода. Добавь метод printInfo(), который будет выводить имя и фамилию
в консоль в формате
Имя: Вася
Фамилия: Пупкин
Замени повторяющийся код метода printUsers() его вызовом.
13.2. Встраивание метода. Избавься от метода ageLessThan16().
13.3. Перемещение метода. Перемести методы printInfo() и printAdditionalInfo() в класс User.
13.4. Расщепление переменной. Переменная age в методе calculateAverageAge() используется для разных промежуточных значений. Перепиши метод без использования этой переменной.
13.5. Удаление присваиваний параметрам. Перепиши метод calculateRate(), чтобы он не
пытался менять входные параметры, а просто возвращал рассчитанное значение.

package com.javarush.task.task29.task2909.user;

import java.util.concurrent.atomic.AtomicInteger;

public class UserHelper {
    private User userAnya = new User("Аня", "Смирнова", 10);
    private User userRoma = new User("Рома", "Виноградов", 30);

    private boolean isManAnya = false;
    private boolean isManRoma = true;

    public void printUsers() {
        userAnya.printInfo();
        userAnya.printAdditionalInfo();
        userRoma.printInfo();
        userRoma.printAdditionalInfo();
    }

    public int calculateAverageAge() {
        User userUra = new User("Юра", "Карп", 28);

        return (userAnya.getAge() + userRoma.getAge() + userUra.getAge()) / 3;
    }

    public int calculateRate(AtomicInteger base, int age, boolean hasWork, boolean hasHouse) {
        AtomicInteger calc = new AtomicInteger();

        calc.set(base.get() + age / 100);
        calc.set((int) (calc.get() * (hasWork ? 1.1 : 0.9)));
        calc.set((int) (calc.get() * (hasHouse ? 1.1 : 0.9)));

        return calc.get();
    }

    public String getBossName(User user) {
        Work work = user.getWork();
        return work.getBoss();
    }
}


package com.javarush.task.task29.task2909.user;

public class User {
    private String name;
    private String surname;
    private int age;

    private String country;
    private String city;
    private House house;

    private Work work;

    public User(String name, String surname, int age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getAddress() {
        return country + " " + city + " " + house.house;
    }

    public Work getWork() {
        return work;
    }

    public void setWork(Work work) {
        this.work = work;
    }

    public void printInfo() {
        System.out.println("Имя: " + getName());
        System.out.println("Фамилия: " + getSurname());
    }

    public void printAdditionalInfo() {
        if (getAge() < 16)
            System.out.println("Пользователь моложе 16 лет");
        else
            System.out.println("Пользователь старше 16 лет");
    }
}


На выходе:



Подкиньте кто-нибудь идею. А то шаманство какое-то.