• ,

level10.lesson11.home09

Здравствуйте. У меня на ПК код компилируется и работает. А сервер говорит " Программа не компилируется".

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

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) влияет на результат.
*/

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

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

        for (Map.Entry<String, Integer> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
		String tempKey = "";
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        for (int i = 0; i < list.size(); i++) {
		tempKey = list.get(i);	
		if (!result.containsKey(tempKey)) result.put(tempKey,1);
		else result.replace(tempKey, result.get(tempKey)+1); 
			} 		
        return result;
		 
    }

}


Обнаружил, что метод replace класса HashMap появился в Java 8 SE (на ПК стоит такая). На сервере видимо Java SE 7.

Переписал последний метод без replace, результат аналогичный, на ПК компилируется, работает, а на сервер javarush не компилирует, в чем ошибка?
public static Map<String, Integer> countWords(ArrayList<String> list)
    {
		String tempKey = "";
		int tempValue;
        HashMap<String, Integer> result = new HashMap<String, Integer>();

        for (int i = 0; i < list.size(); i++) {
		tempKey = list.get(i);	
		if (!result.containsKey(tempKey)) result.put(tempKey,1);
		else {
			tempValue = result.get(tempKey)+1;
			result.remove(tempKey);
			result.put(tempKey, tempValue);
			} 
		}
        return result;
		 
		
	}
}
  • ,

com.javarush.test.level10.lesson11.home09

Программа работает, но не может пройти тест. Не могу понять что не так.
package com.javarush.test.level10.lesson11.home09;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/* Одинаковые слова в списке
Ввести с клавиатуры в список 20 слов. Нужно подсчитать количество одинаковых слов в списке.
Результат нужно представить в виде словаря Map<String, Integer>, где первый параметр – уникальная строка,
а второй – число, сколько раз данная строка встречалась в списке.
Вывести содержимое словаря на экран.
В тестах регистр (большая/маленькая буква) влияет на результат.
*/

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

        ArrayList<String> words = new ArrayList<String>();
        for (int i = 0; i < 20; i++)
        {
            words.add(reader.readLine());
        }

        Map<String, Integer> map = countWords(words);

        for (Map.Entry<String, Integer> pair : map.entrySet())
        {
            System.out.println(pair.getKey() + " " + pair.getValue());
        }
    }

    public static Map<String, Integer> countWords(ArrayList<String> list)
    {
        HashMap<String, Integer> result = new HashMap<String, Integer>();
        ArrayList<String> lists = new ArrayList<String>();

           for(int i = 0; i < list.size();i++)
        {
            String s = list.get(i).toLowerCase();
            lists.add(s);
        }
            for(int g = 0; g < lists.size(); g++)
            {
                int count = 0;
                for (int i = 0; i < lists.size(); i++)
                {
                    if (lists.get(i).equals(lists.get(g))) count++;
                }
                result.put(lists.get(g),count);

            }

        //напишите тут ваш код


        return result;
    }

}
  • ,

level06.lesson11.bonus02 помогите не проходит

package com.javarush.test.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));

        Cat catGrandfather = new Cat(reader.readLine());
        Cat catGrandmother = new Cat(reader.readLine());
        Cat catFather = new Cat(reader.readLine(),null, catGrandfather);
        Cat catMother = new Cat(reader.readLine(),catGrandmother,null);
        Cat catSon = new Cat(reader.readLine(),catMother,catFather);
        Cat catDaudhter = new Cat(reader.readLine(),catMother,catFather);

        System.out.println(catGrandfather);
        System.out.println(catGrandmother);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDaudhter);
    }

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

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

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

        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 (mother != null && 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;
        }
    }

}

level20.lesson02.task03

package com.javarush.test.level20.lesson02.task03;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/* Знакомство с properties
В методе fillInPropertiesMap считайте имя файла с консоли и заполните карту properties данными из файла.
Про .properties почитать тут - http://ru.wikipedia.org/wiki/.properties
Реализуйте логику записи в файл и чтения из файла для карты properties.
*/
public class Solution {
    public static Map<String, String> properties = new HashMap<>();

    public static void main(String[] args) throws Exception {
        Solution solution = new Solution();
        solution.fillInPropertiesMap();
    }

    public void fillInPropertiesMap() throws Exception {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name;
        while (((name = reader.readLine()) == null) || !(name.contains(".properties"))) System.out.println("enter file name with .properties extension");
        FileInputStream inputStream = new FileInputStream(name);
        load(inputStream);
        OutputStream outputStream = new FileOutputStream(name);
        save(outputStream);
        inputStream.close();
        outputStream.close();
        reader.close();
    }

    public void save(OutputStream outputStream) throws Exception {
        Properties props = new Properties();
        for (Map.Entry<String, String> entry : properties.entrySet()) props.setProperty(entry.getKey(), entry.getValue());    //наполняем массив Properties парами ключ-значение
        props.store(outputStream, null);    //выгружаем пары массива Properties в файл .properties
    }

    public void load(InputStream inputStream) throws Exception {
        Properties props = new Properties();
        props.load(inputStream);    //выгружаем Properties из файла .properties в массив
        for (Map.Entry<Object, Object> entry : props.entrySet()) properties.put(entry.getKey().toString(), entry.getValue().toString());    //заполняем статический массив из массива Properties
    }
}


Всё работает, но валидатор не принимает.
  • ,

level26.lesson15.big01 lvl10

import java.util.*;
import com.javarush.test.level26.lesson15.big01.exception.NotEnoughMoneyException;

public class CurrencyManipulator
{
    private String currencyCode;
    private Map<Integer, Integer> denominations = new HashMap<>();

    public String getCurrencyCode()
    {
        return currencyCode;
    }

    public CurrencyManipulator(String currencyCode)
    {
        this.currencyCode = currencyCode;
    }
    public void addAmount(int denomination, int count){
        int result = count;
        if(denominations.containsKey(denomination))
            result+=denominations.get(denomination);
     denominations.put(denomination,result);
    }
    public int getTotalAmount(){
        int sum = 0;
        for(Integer i : denominations.keySet())
            sum+=i*denominations.get(i);
        return sum;
    }
    public  boolean hasMoney(){
        return !denominations.isEmpty();
    }
    public boolean isAmountAvailable(int expectedAmount){
        return expectedAmount > 0  && expectedAmount < getTotalAmount();
    }
    public Map<Integer, Integer> withdrawAmount(int expectedAmount) throws NotEnoughMoneyException{
        // в allVariants добавляются все найденые варианты, компаратор сделает первым нужный вариант
        TreeSet<Map<Integer,Integer>> allVariants = new TreeSet<>(ComparatorFactory.lowCountBillFirst());
        // аналог denominations, отсортированый 
        Map<Integer,Integer> forReduceBillCount = new TreeMap<>(ComparatorFactory.bigBillFirst());
        forReduceBillCount.putAll(denominations);

        do{
        // методом reduceBill снижается количество купюр на 1  в поисках нового варианта комбинации
            int currentSum = expectedAmount;
            Map<Integer, Integer> currentMap = new LinkedHashMap<>();

            for(Integer key : forReduceBillCount.keySet()){
                int value = forReduceBillCount.get(key);
                if (key > currentSum || value <= 0) continue;
                int divider = currentSum / key;
                if (divider <= value)
                {
                    currentSum = currentSum - divider * key;
                    currentMap.put(key, divider);
                } else
                {
                    currentSum = currentSum - value * key;
                    currentMap.put(key, value);
                }
                if (currentSum == 0)
                {
                    allVariants.add(currentMap);
                    break;
                }
            }
        }while (reduceBills(forReduceBillCount));
        if(allVariants.isEmpty()) throw new NotEnoughMoneyException();
        Map<Integer,Integer> finalMap = allVariants.first();

        for(Integer i : denominations.keySet()){
            if(finalMap.get(i) != null)
               denominations.put(i,denominations.get(i) - finalMap.get(i));
        }


        return denominations;
    }
    public static boolean reduceBills(Map<Integer,Integer> map){
        for(Integer i : map.keySet())
            if(map.get(i) > 0) {
                map.put(i,map.get(i) - 1);
                return true;
            }
        return false;
    }

    public static void main(String[] args) throws Exception{
        CurrencyManipulator cm = new CurrencyManipulator("LOL");
        cm.denominations.put(1000, 2);
        cm.denominations.put(600, 3);
        //cm.denominations.put(100,5);
        cm.denominations.put(50, 12);
        //cm.withdrawAmount(350);
        TreeMap<Integer,Integer> map = new TreeMap<>(ComparatorFactory.bigBillFirst());
                map.putAll(cm.withdrawAmount(1200));
        System.out.println(map);

    }

}



import com.javarush.test.level26.lesson15.big01.ComparatorFactory;
import com.javarush.test.level26.lesson15.big01.ConsoleHelper;
import com.javarush.test.level26.lesson15.big01.CurrencyManipulator;
import com.javarush.test.level26.lesson15.big01.CurrencyManipulatorFactory;
import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException;
import com.javarush.test.level26.lesson15.big01.exception.NotEnoughMoneyException;

import java.util.Map;
import java.util.TreeMap;

/**
 * Created by PC-User on 05.01.2017.
 */
class WithdrawCommand implements Command
{
    @Override
    public void execute()  throws InterruptOperationException
    {
        String currencyCode = ConsoleHelper.askCurrencyCode();
        CurrencyManipulator cm = CurrencyManipulatorFactory.getManipulatorByCurrencyCode(currencyCode);
        int amount;
        TreeMap<Integer,Integer> map = new TreeMap<>(ComparatorFactory.bigBillFirst());
        while(true){
            try
            {
                ConsoleHelper.writeMessage("enter the sum you need");
                amount = Integer.parseInt(ConsoleHelper.readString());
                if (amount <= 0) throw new NumberFormatException();
                if( cm.isAmountAvailable(amount)){
                    map.putAll(cm.withdrawAmount(amount));
                    for(Integer i : map.keySet())
                        ConsoleHelper.writeMessage(String.format("\t%d - %d", i, map.get(i)));
                    ConsoleHelper.writeMessage("transaction success complete");
                    break;
                }
                ConsoleHelper.writeMessage("wrong data");
            }
            catch (NumberFormatException e1){
                ConsoleHelper.writeMessage("wrong data");
            }
            catch (NotEnoughMoneyException e)
            {
                ConsoleHelper.writeMessage("not enough money");
            }
        }
    }
}


import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;

/**
 * Created by PC-User on 06.01.2017.
 */
public class ComparatorFactory
{
    public static Comparator<? super Map<Integer,Integer>> lowCountBillFirst(){
        TreeSet<Map<Integer,Integer>> allVariants = new TreeSet<>(new Comparator<Map<Integer, Integer>>()
        {
            @Override
            public int compare(Map<Integer, Integer> o1, Map<Integer, Integer> o2)
            {
                int sum1 = 0;
                for(Integer i : o1.keySet())
                    sum1+=o1.get(i);
                int sum2 = 0;
                for(Integer i : o2.keySet())
                    sum2+=o2.get(i);
                if(sum1 != sum2)
                    return sum1 - sum2 ;
                int max1 = 0;
                for(Integer i : o1.keySet())
                    if( max1 < i) max1 = i;
                int max2 = 0;
                for(Integer i : o2.keySet())
                    if( max2 < i) max2 = i;
                if( max1 != max2)
                    return  max2 - max1;

                return o2.get(max2) - o1.get(max1);
            }
        });
        return allVariants.comparator();
    }
    public static Comparator<? super Integer> bigBillFirst(){
        TreeMap<Integer,Integer> forReduceBillCount = new TreeMap<>(new Comparator<Integer>()
        {
            @Override
            public int compare(Integer o1, Integer o2)
            {
                return o2 - o1;
            }
        });
        return forReduceBillCount.comparator();
    }
}

level20.lesson02.task03 — всё работает, но не принимает валидатор

package com.javarush.test.level20.lesson02.task03;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/* Знакомство с properties
В методе fillInPropertiesMap считайте имя файла с консоли и заполните карту properties данными из файла.
Про .properties почитать тут - http://ru.wikipedia.org/wiki/.properties
Реализуйте логику записи в файл и чтения из файла для карты properties.
*/
public class Solution {
    public static Map<String, String> properties = new HashMap<>();

    public void fillInPropertiesMap() throws Exception {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name;
        while (((name = reader.readLine()) == null) || !(name.contains(".properties"))) System.out.println("enter file name with .properties extension");
        FileInputStream inputStream = new FileInputStream(name);
        load(inputStream);
        OutputStream outputStream = new FileOutputStream(name);
        save(outputStream);
        inputStream.close();
        outputStream.close();
        reader.close();
    }

    public void save(OutputStream outputStream) throws Exception {
        PrintWriter writer = new PrintWriter(outputStream);
        for (Map.Entry<String, String> entry : properties.entrySet()) writer.println(entry.getKey() + "=" + entry.getValue());
        writer.close();
    }

    public void load(InputStream inputStream) throws Exception {
        Properties props = new Properties();
        props.load(inputStream);
        for (Map.Entry<Object, Object> entry : props.entrySet()) properties.put(entry.getKey().toString(), entry.getValue().toString());
    }
}


всё отрабатывает отлично, менял разделитель ключа — значения в файле на: = «пробел»

level20.lesson02.task03 — всё работает, но не принимает валидатор

package com.javarush.test.level20.lesson02.task03;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/* Знакомство с properties
В методе fillInPropertiesMap считайте имя файла с консоли и заполните карту properties данными из файла.
Про .properties почитать тут - http://ru.wikipedia.org/wiki/.properties
Реализуйте логику записи в файл и чтения из файла для карты properties.
*/
public class Solution {
    public static Map<String, String> properties = new HashMap<>();

    public void fillInPropertiesMap() throws Exception {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name;
        while (((name = reader.readLine()) == null) || !(name.contains(".properties"))) System.out.println("enter file name with .properties extension");
        FileInputStream inputStream = new FileInputStream(name);
        load(inputStream);
        OutputStream outputStream = new FileOutputStream(name);
        save(outputStream);
        inputStream.close();
        outputStream.close();
        reader.close();
    }

    public void save(OutputStream outputStream) throws Exception {
        PrintWriter writer = new PrintWriter(outputStream);
        for (Map.Entry<String, String> entry : properties.entrySet()) writer.println(entry.getKey() + "=" + entry.getValue());
        writer.close();
    }

    public void load(InputStream inputStream) throws Exception {
        Properties props = new Properties();
        props.load(inputStream);
        for (Map.Entry<Object, Object> entry : props.entrySet()) properties.put(entry.getKey().toString(), entry.getValue().toString());
    }
}


всё отрабатывает отлично, менял разделитель ключа — значения в файле на: = «пробел»

level20.lesson02.task03 — всё работает, но не принимает валидатор

package com.javarush.test.level20.lesson02.task03;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/* Знакомство с properties
В методе fillInPropertiesMap считайте имя файла с консоли и заполните карту properties данными из файла.
Про .properties почитать тут - http://ru.wikipedia.org/wiki/.properties
Реализуйте логику записи в файл и чтения из файла для карты properties.
*/
public class Solution {
    public static Map<String, String> properties = new HashMap<>();

    public void fillInPropertiesMap() throws Exception {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String name;
        while (((name = reader.readLine()) == null) || !(name.contains(".properties"))) System.out.println("enter file name with .properties extension");
        FileInputStream inputStream = new FileInputStream(name);
        load(inputStream);
        OutputStream outputStream = new FileOutputStream(name);
        save(outputStream);
        inputStream.close();
        outputStream.close();
        reader.close();
    }

    public void save(OutputStream outputStream) throws Exception {
        PrintWriter writer = new PrintWriter(outputStream);
        for (Map.Entry<String, String> entry : properties.entrySet()) writer.println(entry.getKey() + "=" + entry.getValue());
        writer.close();
    }

    public void load(InputStream inputStream) throws Exception {
        Properties props = new Properties();
        props.load(inputStream);
        for (Map.Entry<Object, Object> entry : props.entrySet()) properties.put(entry.getKey().toString(), entry.getValue().toString());
    }
}


всё отрабатывает отлично, менял разделитель ключа — значения в файле на: = «пробел»

level34.lesson15.big01 задание 10

Условие задания

Задание 10.

В игре будет несколько уровней, все уровни будут храниться в текстовом файле. Сейчас мы
напишем тестовую реализацию загрузчика уровней LevelLoader. Почему тестовую? Полный
функционал нам пока не нужен, он довольно сложный, оставим его на потом. А пока:
10.1. Создай класс LevelLoader в пакете model.
10.2. Добавь в класс конструктор, принимающий Path levels. Параметр levels – это
путь к тестовому файлу, содержащему описание уровней.
10.3. Добавь в класс LevelLoader метод GameObjects getLevel(int level). Пока не важно,
что будет возвращать этот метод. Пусть он всегда возвращает набор из: одного игрока,
одного дома, одного ящика и нескольких стен. Так будет проще отладить работу игры.
Координаты каждого объекта должны быть не нулевые и кратны половине
FIELD_SELL_SIZE (центр каждого объекта должен быть в середине ячейки поля).

И не пойму что не так с моей реализацией, уже крутил и так и сяк, менял модификаторы полей и т.д.
Перечитывал условие 10 раз, как по мне, то у меня все правильно реализовано, добавил 3 стены, ящик, игрока и дом, но валидацию не проходит.
В инете лазил, тоже никакие предыдущие топики по этой задачи не натолкнули меня на идею, что же у меня неправильно.
Посмотрите свежим взглядом, может что нибудь заметите:


package com.javarush.test.level34.lesson15.big01.model;

import java.nio.file.Path;
import java.util.HashSet;
import java.util.Set;

import static com.javarush.test.level34.lesson15.big01.model.Model.FIELD_SELL_SIZE;

public class LevelLoader {

    private Path levels;

    public LevelLoader(Path levels) {
        this.levels = levels;
    }

    public GameObjects getLevel(int level) {
//ищем средину ячейки
        int x = FIELD_SELL_SIZE / 2;
        int y = FIELD_SELL_SIZE / 2;

// Объявляем и инициализируем сэты
        Set<Wall> walls = new HashSet<>();
        Set<Box> boxes = new HashSet<>();
        Set<Home> homes = new HashSet<>();
//И объявляем плеера
        Player player;

//Добавляем значения в сэты, тут все кратное, при умножении ну точно уж кратно начальному числу.

        walls.add(new Wall(x, y));
        walls.add(new Wall(x, y * 2));
        walls.add(new Wall(x, y * 3));

        boxes.add(new Box(x * 2, y * 2));
        homes.add(new Home(x * 3, y * 3));
        player = new Player(x * 4, y * 4);

//Ну и возвращаем объект который надо вернуть.
        return new GameObjects(walls, boxes, homes, player);
    }
}
  • ,

level22.lesson13.task03

Все топики прочёл, но решения как-то не обнаружил.
Не проходит проверку сервера, хотя вывод вроде как верный на всех примерах:
public class Solution {

    public static boolean checkTelNumber(String telNumber) {
        String mask = telNumber;

        if (mask.matches("-.*|.*-.*") && !mask.matches(".*-{2}.*")){
            mask = mask.replaceFirst("-", "");
        }
        if (mask.matches(".*-.*")){
            mask = mask.replaceFirst("-", "");
        }
        if (mask.matches(".*\\(\\d{3}\\)\\d*")){
            mask = mask.replace("(", "");
            mask = mask.replace(")", "");
        }

        if (mask.matches("^\\+\\d{12}|\\d{10}"))
            return true;
        else return false;
    }

    public static void main(String[] args){
        System.out.println(checkTelNumber("+380501234567")); // Вывод true
        System.out.println(checkTelNumber("+38(050)1234567")); // Вывод true
        System.out.println(checkTelNumber("8521367985")); // Вывод true
        System.out.println(checkTelNumber("(852)1367985")); // Вывод true
        System.out.println(checkTelNumber("+38050123-45-67")); // Вывод true
        System.out.println(checkTelNumber("050123-4567")); // Вывод true
        System.out.println(checkTelNumber("+38)050(1234567")); // Вывод false
        System.out.println(checkTelNumber("+38(050)1-23-45-6-7")); // Вывод false
        System.out.println(checkTelNumber("050ххх4567")); // Вывод false
        System.out.println(checkTelNumber("050123456")); // Вывод false
        System.out.println(checkTelNumber("1-23456789-0")); // Вывод true
    }
}
  • ,

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 grandFatherName = reader.readLine();
        Cat grandFatherCat = new Cat(grandFatherName);

        String grandMotherName = reader.readLine();
        Cat grandMotherCat = new Cat(grandMotherName);


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

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


        String sunName = reader.readLine();
        Cat catSun = new Cat(sunName, catMother, catFather);


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

        System.out.println(grandFatherCat);
        System.out.println(grandMotherCat);
        System.out.println(catFather);
        System.out.println(catMother);

        System.out.println(catSun);
        System.out.println(catDaughter);


    }

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

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

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

        @Override
        public String toString()
        {

            if (parent == null&&father==null)

                return "Cat name is " + name + ", no mother, no father";

            if(parent==null&&father!=null)
                return "Cat name is "+name+", no mother, father is "+father.name;

            if(parent!=null&&father==null)
                return "Cat name is "+name+", mother is "+parent.name+", no father";

            if(parent!=null&&father!=null)

                return "Cat name is "+name+", mother is "+parent.name+", father is "+father.name;
            else return null;
        }
    }
}


  • ,

level05.lesson12.home02; - не проходит тестирование

/* Man and Woman
1. Внутри класса Solution создай public static классы Man и Woman.
2. У классов должны быть поля: name(String), age(int), address(String).
3. Создай конструкторы, в которые передаются все возможные параметры.
4. Создай по два объекта каждого класса со всеми данными используя конструктор.
5. Объекты выведи на экран в таком формате [name + " " + age + " " + address].
*/

public class Solution
{
public static void main(String[] args)
{
Man man = new Man («Evgen», 29, «Minsk»);
Man man2 = new Man («Vasia», 25, «Gomel»);
Woman woman = new Woman («Nastia», 30, «Minsk»);
Woman woman2 = new Woman («Olia», 25, «Piter»);
System.out.println(man);
System.out.println(man2);
System.out.println(woman);
System.out.println(woman2);
}

public static class Man
{
private String name;
private int age;
private String adress;
Man (String name, int age, String adress )
{
this.name = name;
this.age = age;
this. adress = adress;
}
public String toString()
{
return this.name +" "+this.age+" "+this.adress;
}
}
public static class Woman
{
private String name;
private int age;
private String adress;
Woman (String name, int age, String adress)
{
this.name = name;
this.age = age;
this.adress = adress;
}
public String toString ()
{
return this.name+" "+this.age+" "+this.adress;
}
}
}

Помогите плиз разобраться, почему не проходит тестирование?
программа выводит 4 объекта с указанными параметрами: name + " " + age + " " + address.
Вот что выводит IDEA:

Evgen 29 Minsk
Vasia 25 Gomel
Nastia 30 Minsk
Olia 25 Piter

Process finished with exit code 0