#java
Возможно ли как то упростить код метода: public String say() { if(i<=0) return name +" спит."; else { StringBuilder sb = new StringBuilder(); for (int j = 0; j < i; j++) { sb.append("я"); } return name + " говорит м"+sb+"у!"; } } До типа такого: public String say() { return i<=0?name+" спит.":name + " говорит м"+'я'*i+"у!"; } Я понимаю, что 'я'*i не правильно. Это образный пример.
Ответы
Ответ 1
Вот так, без лишних методов и повторов переменных. public String sayOrSleep(int i, String name) { return name + ((i<=0) ? " спит." : " говорит м"+ String.format("%0" + i + "d", 0).replace("0","я")+"у!"); } Зачем писать костыль, когда уже все написано до Вас для подобных случаев :)Ответ 2
public String say() { return i <= 0 ? name + " спит." : name + " говорит м" + multiplyCharYa(i) + "у!"; } public String multiplyCharYa(int i){ StringBuilder sb = new StringBuilder(); for (int j = 0; j < i; j++) { sb.append("я"); } return sb.toString(); }Ответ 3
С использование Java 8 можно воспользоваться комбинацией Collections.nCopies и методом String.join public String sayOrSleep() { return name + (i <= 0 ? " спит." : " говорит м" + String.join("", Collections.nCopies(i, "я")) + "у!"); } Еще вариант с использованием Collectors.joining public String sayOrSleep() { return name + (i <= 0 ? " спит." : " говорит м" + Collections.nCopies(i, "я").stream().collect(Collectors.joining("")) + "у!"); }
Комментариев нет:
Отправить комментарий