Господа. В чем я не прав? PrintStream использую, в byteArrayOutputStream передаю, в зад возвращаю, в консоль вывожу. А на меня ругаются.
package com.javarush.task.task19.task1927;
/*
Контекстная реклама
Контекстная реклама
В методе 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 outPrintStream = System.out;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(byteArrayOutputStream);
System.setOut(printStream);
testString.printSomething();
System.setOut(outPrintStream);
byte[] bytes = byteArrayOutputStream.toByteArray();
StringBuilder stringBuilder = new StringBuilder();
int count = 1;
for (int i = 0; i < bytes.length; i++) {
if (bytes[i] != 13) {
stringBuilder.append((char) bytes[i]);
}else {
count++;
i++;
System.out.println(stringBuilder);
if (count ==3){
System.out.println("JavaRush - курсы Java онлайн");
count = 1;
}
stringBuilder.setLength(0);
}
}
}
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");
}
}
}