package com.javarush.test.level19.lesson10.home09; /* Контекстная реклама В методе main подмените объект System.out написанной вами реадер-оберткой Ваша реадер-обертка должна выводить на консоль контекстную рекламу после каждого второго println-а Вызовите готовый метод printSomething(), воспользуйтесь testString Верните переменной System.out первоначальный поток Рекламный текст: "JavaRush - курсы Java онлайн" Пример вывода: first second JavaRush - курсы Java онлайн third fourth JavaRush - курсы Java онлайн fifth */ import java.io.ByteArrayOutputStream; import java.io.PrintStream; public class Solution { public static TestString testString = new TestString(); public static void main(String[] args) { PrintStream consoleStream = System.out; //сохраняем System.out в первоначальном виде в поток PrintStream ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //создаём динамический массив System.setOut(new PrintStream(outputStream)); //меняем функционал System.out. теперь, когда будут попытки вызвать System.out, результат будет записан в outputStream; например, при вызове System.out.println("Hello!"); outputStream.toString = "Hello!", на экран ничего не выведется testString.printSomething(); //перехват String result = outputStream.toString(); //загоняем значение перехваченного System.out в строку System.setOut(consoleStream); //заново учим System.out выводить текст на консоль String string = addContext(result); //производим любые операции с перехваченной строкой. в нашем случае, перехватываются сразу все строки метода System.out.println(string); //печатаем строку } private static String addContext(String result) { StringBuilder builder = new StringBuilder(); int count = 0; char[] ch = result.toCharArray(); for (char c : ch) { builder.append(c); if (c == 10) count++; if (count == 2) { builder.append("JavaRush - курсы Java онлайн\n"); count = 0; } } result = builder.toString(); return result; } public static class TestString { public void printSomething() { System.out.println("first"); System.out.println("second"); System.out.println("third"); System.out.println("fourth"); System.out.println("fifth"); } } }
Leave A Comment