Помощь с разъяснением кода

184
23 февраля 2019, 01:30

Есть задание, оно уже решено и работает как нужно при вводе с клавиатуры, но код задания автоматически предлагает проверку без использования клавиатуры.
Что делает эта строчка кода?

System.setIn(new ByteArrayInputStream(
  "char^String^int^double^stop".replace("^", System.lineSeparator()).getBytes(ENCODING)));
Part3.main(args);

После этого, насколько я понимаю, следует строка восстановления стандартного потока ввода:

System.setIn(STD_IN);
Answer 1

Посылает на вход

char
String
int
double
stop

как если бы вы ввели это с клавиатуры. Сначала каждый символ "^" заменяется на символ переноса строки, который берется из "System.lineSeparator()", потом все это преобразуется в байт массив с текущей кодировкой "getBytes(ENCODING)", этот массив передается конструктору "ByteArrayInputStream", который устанавливается как поток ввода

Answer 2

Как оказалось всё очень просто что бы получить все эти данные которые посылаются в поток ввода достаточно вычитать внутри main поток ввода через массив и далее его уже обрабатывать как нужно.

READ ALSO
Как вставить комментарий в XML документ?

Как вставить комментарий в XML документ?

Ниже код моей функцииВозможно, моя проблема заключается в том, что я неправильно понял как работает insertBefore

199
model.addAttribute (Spring MVC)

model.addAttribute (Spring MVC)

Объясните, пожалуйста, что значит modeladdAttribute("some text", someObject);

174
Взаимодействие с java приложением

Взаимодействие с java приложением

Есть приложение в котором можно выполнять скрипты на JSЗадача - из этого приложения отправлять e-mail

146