Вывод массива в обратном порядке java

Содержание

Описание проблемы

Как вывести массив или строку в обратном порядке?

Решение: вывод строки в обратном порядке

Следующий пример показывает как вывести строку в обратном порядке в Java, после взятия ее из аргумента командной строки. Программа буферизует входную строку с использованием метода StringBuffer(), реверсирует буфер и затем преобразует буфер в String с помощью метода toString().

Результат

Получим следующий результат:

Решение: вывод массива в обратном порядке

Ниже продемонстрирован пример как вывести массив в обратном порядке в Java.

Создаётся массив целых чисел. Нужно вывести массив в обратном порядке.
У меня получается при помощи .length . Есть ли способ сделать это без .length , используя циклы for-each и арифметические действия?

7 ответов 7

Предположим, что у нас просто есть массив, созданный где-то и как-то (то есть доступа к num и процессу его формирования мы не имеем). А также что нельзя проводить сортировку массива (как оригинала, так и копии) и использовать другие структуры данных (списки, стеки и т.д.). И, конечно, нельзя использовать .length у массива.

Первый вариант. Вычисление длины массива вручную:

Вместо for-each можно воспользоваться обычным циклом в связке с ArrayIndexOutOfBoundsException .

Второй вариант. Использование рекурсии для вывода на экран (по предложению @etki) с ограничением рекурсии с помощью ArrayIndexOutOfBoundsException :

Данная статья написана командой Vertex Academy. Это одна из статей из нашего "Самоучителя по Java."

Напишите программу, которая меняет местами элементы одномерного массива из String в обратном порядке. Не используйте дополнительный массив для хранения результатов.

Решение:

Комментарии к задаче:

В результате выполнения этого кода получим перевернутый массив: вместо "Каждый охотник желает знать где сидит фазан" — "фазан сидит где знать желает охотник Каждый "

Как была решена задача? Основная ее часть — это фрагмент:

Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную String temp (temp — от temporary, "временный"). Можно было бы обойтись и без нее, если бы массив хранил переменные числового типа.

Тут есть a[i] и малопонятное a[n-i-1]. Но на самом деле n-i-1 это просто формула для определения "противоположного" элемента массива:

Если бы мы имели массив, который бы состоял из элементов a, b, c, d, e и f, то есть массив из 6 элементов (n=6), "противоположным" (то есть элементом a[n-i-1]) для каждого из них были бы f для a, e для b и d для c. Цикл из фрагмента кода выполнялся бы три раза, до элемента d (i=0, 1, 2). Граница выполнения массива показана оранжевой линией на рисунке.

Так, обратите внимание, что мы не должны проходить циклом весь массив, чтобы поменять его элементы местами.

Надеемся — наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.

Оцените статью
Добавить комментарий