Пихать функционал в саму обертку, о которой написано в условиях уже даже не пытаюсь - не принимает.
Ну, собственно теперешний вариант тоже не принимает
Вот что я получаю на консоль:
"Connected to the target VM, address: '127.0.0.1:64441', transport: 'socket'
first
second
JavaRush - курсы Java онлайн
third
fourth
JavaRush - курсы Java онлайн
fifth
Disconnected from the target VM, address: '127.0.0.1:64441', transport: 'socket'"
На что он может ругаться ?
package com.javarush.task.task19.task1927;
/*
Контекстная реклама
*/
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream standardOutput = System.out;
//PrintStream advPrintStream = new AdvertisementPrintStream(new ByteArrayOutputStream());
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
PrintStream advPrintStream = new PrintStream(byteOutputStream);
System.setOut(advPrintStream);
testString.printSomething();
System.setOut(standardOutput);
String[] words = byteOutputStream.toString().split(System.lineSeparator());
int wordsCounter = 0;
StringBuilder resultBuilder = new StringBuilder();
for (String word:
words) {
if(wordsCounter%2 == 0
&& wordsCounter!=0){
resultBuilder.append("JavaRush - курсы Java онлайн").append(System.lineSeparator())
.append(word).append(System.lineSeparator());
} else {
resultBuilder.append(word).append(System.lineSeparator());
}
wordsCounter++;
}
resultBuilder.setLength(resultBuilder.length()-2);
System.out.println(resultBuilder.toString());
}
static class AdvertisementPrintStream extends PrintStream{
private int invocationCounter;
private OutputStream out;
public AdvertisementPrintStream(OutputStream out) {
super(out);
this.out = out;
}
@Override
public void println(String x) {
if(invocationCounter%2 == 0
&& invocationCounter!=0){
super.println("JavaRush - курсы Java онлайн");
super.println(x);
} else {
super.println(x);
}
invocationCounter++;
}
public OutputStream getOut() {
return out;
}
}
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");
}
}
}