Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.task.task19.task1913;
- /*
- В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
- Твоя ридер-обертка должна выводить только цифры.
- Вызови готовый метод printSomething(), воспользуйтесь testString.
- Верни переменной System.out первоначальный поток.
- Выведи модифицированную строку в консоль.
- Пример вывода:
- 12345678
- Требования:
- 1. Класс Solution должен содержать класс TestString.
- 2. Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу проинициализировано.
- 3. Класс TestString должен содержать публичный void метод printSomething().
- 4. Метод printSomething() класса TestString должен выводить на экран строку "it's 1 a 23 text 4 f5-6or7 tes8ting".
- 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() согласно заданию, и выводить её в консоль.
- */
- import java.io.ByteArrayInputStream;
- 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 = System.out;
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- //Создаем динамический массив
- PrintStream stream = new PrintStream(outputStream);
- //Устанавливаем его как текущий System.out
- System.setOut(stream);
- //Вызываем функцию, которая ничего не знает о наших манипуляциях
- testString.printSomething();
- //Преобразовываем записанные в наш ByteArray данные в строку
- String result = outputStream.toString();
- //Возвращаем все как было
- System.setOut(printStream);
- //разворачиваем строку
- String s2 = result.replaceAll("\\D+",""); // извлекает из строки числа
- //выводим ее в консоль
- System.out.println(s2);
- }
- public static class TestString {
- public void printSomething() {
- System.out.println("it's 1 a 23 text 4 f5-6or7 tes8ting");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement