В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией. Твоя ридер-обертка должна выводить на консоль решенный пример. Вызови готовый метод printSomething(), воспользуйтесь testString. Верни переменной System.out первоначальный поток. Возможные операции: + - * Шаблон входных данных и вывода: a [знак] b = c Отрицательных и дробных чисел, унарных операторов — нет. Пример вывода: 3 + 6 = 9 Решение:
public class Solution {
    public static TestString testString = new TestString();

    public static void main(String[] args) {
        PrintStream beginStream = System.out;
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        PrintStream stream = new PrintStream(outputStream);
        System.setOut(stream);
        testString.printSomething();
        System.setOut(beginStream);
        String str = outputStream.toString();
        String[] strMas = str.split(" ");

        StringBuilder buf = new StringBuilder();
        for (int i = 0; i < strMas.length - 1; i++) {
            buf.append(strMas[i]);
            buf.append(" ");
        }

        int sum = 0;
        int a = 0;
        int b = 0;

        if (strMas[0].matches("[\\d]+")) {
            a = Integer.parseInt(strMas[0]);
        }

        if (strMas[2].matches("[\\d]+")) {
            b = Integer.parseInt(strMas[2]);
        }

        if (strMas[1].equals("+"))
            sum = a + b;
        else {
            if (strMas[1].equals("-"))
                sum = a - b;
        }
        buf.append(String.valueOf(sum));
        String result = buf.toString();

        System.out.println(result);
    }

    public static class TestString {
        public void printSomething() {
            System.out.println("3 + 6 = ");
        }
    }
}