Skip to content

Instantly share code, notes, and snippets.

@Maxomax
Created July 12, 2018 13:10
Show Gist options
  • Save Maxomax/233d6678ef94e6140f58d10f1a7a42ef to your computer and use it in GitHub Desktop.
Save Maxomax/233d6678ef94e6140f58d10f1a7a42ef to your computer and use it in GitHub Desktop.
package com.javarush.task.task19.task1911;
/*
Ридер обертка
В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
Твоя ридер-обертка должна преобразовывать весь текст в заглавные буквы.
Вызови готовый метод printSomething(), воспользуйся testString.
Верни переменной System.out первоначальный поток.
Выведи модифицированную строку в консоль.
*/
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
//запоминаем настоящий PrintStream в специальную переменную
PrintStream consoleStream = System.out;
//создаём динамический массив
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//создаём адаптер к классу PrintStream
PrintStream stream = new PrintStream(outputStream);
//устанавливаем его как текущий System.out
System.setOut(stream);
//Вызываем функцию, которая ничего не знает о наших манипуляциях
testString.printSomething();
//преобразуем записанные в наш массив данные в строку
String result = outputStream.toString().toUpperCase();
//возвращаем все как было
System.setOut(consoleStream);
//Выводим модифицированную строку, текст в заглавные буквы
System.out.println(result);
}
public static class TestString {
public void printSomething() {
System.out.println("it's a text for testing");
}
}
}
/*Требования:
1. Класс Solution должен содержать класс TestString.
2. Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу проинициализировано.
3. Класс TestString должен содержать публичный void метод printSomething().
4. Метод printSomething() класса TestString должен выводить на экран строку "it's a text for testing".
5. Метод main(String[] args) класса Solution должен создавать поток PrintStream (используй PrintStream c конструктором принимающим ByteArrayOutputStream).
6. Метод main(String[] args) класса Solution должен подменять и восстанавливать поток вывода в консоль объекта System.out.
7. Метод main(String[] args) класса Solution должен вызывать метод printSomething(),объекта testString.
8. Метод main(String[] args) класса Solution должен модифицировать строку выведенную методом printSomething() согласно заданию, и выводить её в консоль.*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment