В методе 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 = ");
}
}
}
package com.javarush.task.task19.task1914;
/*
Решаем пример
*/
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
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 = ");
}
}
}