Содержание
Описание проблемы
Как вывести массив или строку в обратном порядке?
Решение: вывод строки в обратном порядке
Следующий пример показывает как вывести строку в обратном порядке в 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. Детальную информацию смотрите у нас на сайте.