Задание: В методе main подмени объект System.out написанной тобой ридер-оберткой.
Твоя ридер-обертка должна выводить на консоль контекстную рекламу после каждого второго println-а.
Вызови готовый метод printSomething(), воспользуйся testString.
Верни переменной System.out первоначальный поток.
Рекламный текст: "JavaRush - курсы Java онлайн"
Пример вывода:
first
second
JavaRush - курсы Java онлайн
third
fourth
JavaRush - курсы Java онлайн
fifth
По итогу выводит "fifth" и все. Почему не выводит "first", "second" и т д. не знаю что и думать. Почему не работает эта строчка stringBuilder.append(testStringMas[i]) вне всякой логики. При этом в массиве все есть, почему то не добавляет в stringBuilder.
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream consoleStream = System.out;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(byteArrayOutputStream);
System.setOut(printStream);
testString.printSomething();
String testString = byteArrayOutputStream.toString();
System.setOut(consoleStream);
String[] testStringMas = testString.split("\\n");
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < testStringMas.length; i++) {
System.out.println(testStringMas[i]);
stringBuilder.append(testStringMas[i]);
/*if (i%2 != 0) {
stringBuilder.append("JavaRush - курсы Java онлайн" + "\n");
}*/
}
System.out.println(stringBuilder.toString());
}
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");
}
}
}
И. Ж.
41 уровень
Какой то бред. Как оно может не работать. Элементарный код, но хоть убей не вижу причины.
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
KIRAРазработчик в prosv.ruExpert
26 июля 2022, 12:27решение
Это из за неправильного сплита
У вас строка в виндовс:
first1310
second1310
...
где 13 возврат каретки а 10 разделитель строк
расплитив по разделителю строк 13 остались и затирают вывод.
Для сплит используйте:
+4
И. Ж.
26 июля 2022, 12:49
Большое спасибо! Теперь понял. Оказывается еще ньюанс такой неожиданный имел место.
0