Как поменять элементы массива в обратном порядке в Java
Данная статья написана командой Vertex Academy. Это одна из статей из нашего "Самоучителя по Java."
Напишите программу, которая меняет местами элементы одномерного массива из String в обратном порядке. Не используйте дополнительный массив для хранения результатов.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public class Test { public static void main(String[] args){ String[] a = { "Каждый "," охотник "," желает "," знать "," где "," сидит "," фазан "}; //Выводим изначальный массив в консоль for (int i=0; i<a.length; i++){ System.out.print(a[i]); } System.out.println(); int n = a.length; //Переменная, которая будет использоваться при обмене элементов String temp; for (int i = 0; i < n/2; i++) { temp = a[n-i-1]; a[n-i-1] = a[i]; a[i] = temp; } //Выводим конечный массив в консоль for (int i=0; i<a.length; i++){ System.out.print(a[i]); } } } |
Комментарии к задаче:
В результате выполнения этого кода получим перевернутый массив: вместо "Каждый охотник желает знать где сидит фазан" - "фазан сидит где знать желает охотник Каждый "
Как была решена задача? Основная ее часть - это фрагмент:
1 2 3 4 5 6 7 8 9 10 |
int n = a.length; String temp; for (int i = 0; i < n/2; i++) { temp = a[n-i-1]; a[n-i-1] = a[i]; a[i] = temp; } |
Он по очереди меняет местами противоположные элементы массива, используя как посредника дополнительную переменную 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. Детальную информацию смотрите у нас на сайте.