Валидатор не принимает ни одно из моих четырех решений, почему?
int c = 9;
String st = result.replaceAll("\\r\\n", "") + c;
System.out.println(st);
// Один из вариантов ниже, валидатор тоже не принял
// (result.replaceAll("\r\n", "9")) при помощи replaceAll убираем последние два байта ($ \\b) они невидимые
// (result.trim() + " 9") при помощи trim() обрезаем вначале и в конце пробел и перевод строки и добавляем " 9"
// (result.substring(0,result.length()-2) + "9") удаляем окончание при помощи substringpackage com.javarush.task.task19.task1914;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
/*
Решаем пример
В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
Твоя ридер-обертка должна выводить на консоль решенный пример.
Вызови готовый метод printSomething(), воспользуйтесь testString.
Верни переменной System.out первоначальный поток.
Возможные операции: + - *
Шаблон входных данных и вывода: a [знак] b = c
Отрицательных и дробных чисел, унарных операторов - нет.
Пример вывода:
3 + 6 = 9
Требования:
1. Класс Solution должен содержать класс TestString.
2. Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу
проинициализировано.
3. Класс TestString должен содержать публичный void метод printSomething().
4. Метод printSomething() класса TestString должен выводить на экран строку "3 + 6 = ".
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()
согласно заданию, и выводить её в консоль.
*/
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
PrintStream consolStream = System.out; //запоминаем настоящий PrintStream в специальную переменную
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //Создаем динамический массив
PrintStream stream = new PrintStream(outputStream); //создаем адаптер к классу PrintStream
System.setOut(stream); //Устанавливаем его как текущий System.out
testString.printSomething(); //Вызываем функцию, которая ничего не знает о наших манипуляциях
String result = outputStream.toString(); //Преобразовываем записанные в наш ByteArray данные в строку
System.setOut(consolStream); //Возвращаем все как было
int c = 9;
String st = result.replaceAll("\\r\\n", "") + c;
System.out.println(st);
// Один из этих вариантов попробовать позже, может Валидатор раздуплится
// (result.replaceAll("\r\n", "9")) при помощи replaceAll убираем последние два байта ($ \\b) они невидимые
// (result.trim() + " 9") при помощи trim() обрезаем вначале и в конце пробел и перевод строки и добавляем " 9"
// (result.substring(0,result.length()-2) + "9") удаляем окончание при помощи substring
}
public static class TestString {
public void printSomething() {
System.out.println("3 + 6 = ");
}
}
}