18. Форматирование текста в консоли #
Условие задачи:
Напиши метод, который принимает строку и выводит на консоль отформатированный текст в виде рамки. В рамках должна быть отображена каждая часть строки в отдельной строке так, как показано в примере ниже.
😊 Пример вывода:
****************
* I *
* am *
* Java *
* Developer *
****************
Код:
public class Task1 {
private static final String TEXT = "I am Java Developer";
/*
****************
* I *
* am *
* Java *
* Developer *
****************
*/
/**
* Реализовать функцию вывода на консоль текста в параметре TEXT в формате, указанном выше.
*/
public void printFormattedText(String text) {
throw new UnsupportedOperationException("Implemented it!");
}
}
Спойлеры к решению
Подсказки
- Разбей строку на слова:
Используй методsplit(" ")
, чтобы получить массив слов. - Вычисли максимальную длину слова:
Это поможет правильно установить ширину рамки. - Построй рамку:
Используй символ*
для создания верхней и нижней границы. - Форматированный вывод:
При выводе каждого слова используй форматирование, чтобы добавить пробелы до нужной длины.
Решение
public class Task1 {
private static final String TEXT = "I am Java Developer";
/**
* Функция выводит текст, разбитый на слова, в виде рамки.
* Пример:
* ****************
* * I *
* * am *
* * Java *
* * Developer *
* ****************
*/
public void printFormattedText(String text) {
if (text == null || text.trim().isEmpty()) {
System.out.println("Текст пустой!");
return;
}
// Разбиваем строку на слова
String[] words = text.split("\\s+");
// Находим максимальную длину слова
int maxLength = 0;
for (String word : words) {
if (word.length() > maxLength) {
maxLength = word.length();
}
}
// Формируем верхнюю и нижнюю границы рамки
String border = "*".repeat(maxLength + 6);
// Вывод рамки
System.out.println(border);
for (String word : words) {
// Форматируем вывод так, чтобы слово выводилось с отступами
System.out.printf("* %-"+maxLength+"s *%n", word);
}
System.out.println(border);
}
public static void main(String[] args) {
Task1 task = new Task1();
task.printFormattedText(TEXT);
}
}