Метод int Array Stream System.out.print добавляет знак % в конце при печати Java8

Возникла проблема при попытке распечатать элементы массива int примитивного типа на консоли с помощью метода Stream API forEach с использованием метода System.out.print, поскольку к выводу консоли добавляется дополнительный знак %.

Пожалуйста, найдите ниже мой основной метод -

 public static void main(String[] args) {       
        int[] A = {1, 2, 3, 4, 5, 6, 7, 8};

        Arrays.stream(A).forEach(s -> System.out.print(s));
    }

Выход - 12345678%

Ожидаемый результат - 12345678

Мне было интересно, почему в конце печати массива добавляется дополнительный знак %. Я использую МакОС. Пробовал как с VSCode, так и с командами терминала javac и java, обе выдавали одну и ту же проблему.

Примечание. System.out.println работает нормально без добавления знака %.

Связанное сообщение (без удовлетворительного ответа): Удалить знак процента после System.out.print();

ОБНОВЛЕНИЕ: Оказалось, что это проблема с zsh. Мне удалось проследить за ответом на сообщение StackExchange и добавить PROMPT_EOL_MARK='' в свой файл ~/.zshrc, чтобы удалить знак %.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как ведет себя zsh, когда в конце вывода нет символа новой строки. Вы используете print, который, в отличие от println, не печатает конечную новую строку. См. также этот пост на Unix & Linux Stack Exchange.

Вы увидите то же самое поведение с echo -n (echo, но без завершающей новой строки):

sweeper@sweepers-MacBook-Pro ~ % echo -n Foo
Foo% 
sweeper@sweepers-MacBook-Pro ~ %

Если вы используете bash, % не будет, но обратите внимание, что из-за отсутствия новой строки следующее приглашение остается в той же строке, что и вывод.

bash-3.2$ echo -n Foo
Foobash-3.2$ 

Вы можете просто поставить еще один System.out.println() после своего кода, и на zsh % не будет.

Это очень интересный ответ! Хорошо знать.

joker 10.04.2024 07:07

Отличное объяснение. Спасибо. Мне удалось проследить за ответом на сообщение StackExchange и добавить PROMPT_EOL_MARK='' в свой файл ~/.zshrc, чтобы удалить знак %.

Prakhar 10.04.2024 09:03

Другие вопросы по теме