ничего не трогал - написал три строчки, потыкал раз 10 - все работает. валидатор отказался принимать. пробовал с матчер/паттерн - та же шялпа. Ну ясно дело, что методов куча, можно и стрингбилдер в цикл засунуть - но ничего такого в условии не видел. Может, что-то упустил. З.Ы "яяяяя" всего в количестве 5 штук ибо по задачи с рандома больше 5 число не выпускают.
package com.javarush.task.task24.task2407;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
В работе вам иногда будет нужно закастить класс к какому-нибудь интерфейсу (тут Sayable),
который не реализован в текущем классе
*/
public class Cat implements Pet {
private String name;
public Cat(String name) {
this.name = name;
}
/**
* Это - механизм адаптирования к другому интерфейсу - Sayable
* Внутри метода toSayable создайте class CatPet, реализующий интерфейс Sayable
* Логика метода say:
* Если i < 1, то вывести на экран, что кот спит. Пример, "Васька спит."
* Иначе вывести фразу: "имя_кота говорит мяу!". Пример для i=3, "Васька говорит мяяяу!"
* <p/>
* <b>Пример вывода:</b>
* Мурзик спит.
* Васька говорит мяяу!
* Кошка говорит мяяяяяу!
* Мышь пищит.
* Томас говорит мяу!
* <p/>
*
* @param i количество букв 'я' в слове мяу
* @return экземпляр класса CatPet
*/
public Sayable toSayable(final int i) {
class CatPet implements Sayable {
@Override
public String say() {
return i < 1 ? String.format("%s спит.", name) :
String.format("%s говорит м%sу!", name, "яяяяя".substring(0, i));
}
}
return new CatPet();
}
}